摘要:
基于二分法 index1为首,index2为尾,indexMid指向中间 当Number[index1]大于等于Number[index2]的条件满足时 判断index2和index1的差距是否等于1 如果相等,说明index2即为那个突变点,最小值,将index2赋给indexMid,最终返回Number[indexMid] 如果不等,就取indexMi... 阅读全文
摘要:
主要实现从尾部添加字符和从头部删除字符 从尾部添加直接push进一个stack1即可 从头部删除,需要先将stack1中的字符压入stack2,然后从stack2弹出,这样顺序才对 考虑一种情况,先push进a和b,弹出a,再压入c,再弹出的话要弹出b 在将stack1的数压入stack2之前要判断stack2中是否为空,如果不为空,要等stack2为空了之后才... 阅读全文
摘要:
利用栈,倒序都可以用栈解决 先将数据一个一个压入栈 然后再一个一个弹出 另外还有一种方法是利用递归,递归其实跟栈类似 方法一: package printListReversed5; import java.util.Stack; public class PrintListReversed5 { static void printListRever... 阅读全文
摘要:
先遍历每个字符统计空格数 :String.charAt() 根据空格数计算新的长度 :newLength=oriLength+2*NumOfBlank 新建一个newLength长度的字符数组tempChars用于存放替换空格之后的字符数组 利用System.arraycopy函数将原字符串转换为数组拷贝到新的字符数组tempChars中 从新字符数... 阅读全文
摘要:
先判断数组是否为空,为空返回false 不为空进入循环 获得矩阵的行数:rows=matrix.length 获得矩阵的列数:columns=matrix[0].length 从最右上角开始找,初始化row和column:row=0,column=columns-1; 所以while条件为 row=0 如果找到,即matrix[row][column]=numb... 阅读全文
摘要:
corner case的处理 整数一般考虑两点:一点是符号,另外一点是越界 首先去掉多余的空格字符 然后读符号,可能是正号,也可能是负号,也可能没有符号 然后按顺序读数字 结束条件有三: 1、异常字符出现——舍弃异常字符后的数据,保留前面的数作为结果; 2、数字越界——返回最接近的整数; 3、正常结束 长度为0,返回0 输入0,返回... 阅读全文
摘要:
题意 求字典序的下一个 例子1 输入:123 生成:123、132、213、231、312、321 结果:其中132为123的下一个 例子2 输入:321 生成:123、132、213、231、312、321 结果:其中123为321(循环)的下一个 思路 任意排列:a[0],a[1]……a[n] 找到i,满足a[i]=a[i+2]……>=a[n] 从a[i+1]到a[n]中选取... 阅读全文
摘要:
题意:不用乘除取余操作求除法 思路: 1、如果循环一个个把因子从被除数中减去,那么如果是INT_MAX或者INT_MIN除以1的情况,执行时间会很长 2、改善时间效率的方法采用将因子divisor不断乘以2(可以通过移位实现,同时结果ret也从1不断移位加倍),然后和被除数比较,等到大于等于被除数一半时,就从被除数中减去,将因子个数叠加入结果中,然后在剩下的被除数中采用同样的方法减去小于其一... 阅读全文
摘要:
思路1: 这个题目也要从简单的例子入手,然后发现规律。 1 () 2 ()(),(()) 3 ()()(), (())(), (()()), ()(()), ((())) 规律是这样的 ,假设我们已经产生了n-1对括号的所有组合,那么在这个基础上我们可以产生所有的n对括号的组合,我们把一个(放在每个n-1对括号组合的开头,然后在每个每一个括号配好对的位置插入一个)。这... 阅读全文
摘要:
{ int a; char b[20]; double c; } #define FIND( struc, e ) (size_t)&(((struc*)0)->e) 则FIND(student,a)等于0 FIND(student,b)等于4 FIND求一个结构体struc里某个变量相对struc的偏移量 size_t是一种数据类型 #define SECONDS_PER... 阅读全文