三种方法 第一种不断除2 除2可以用右移方式,但这种方式对于负数的话容易造成左边全为1,进入死循环 可以判断如果输入负数的话,取他的相反…
分类:剑指offer
两个栈实现队列 7
主要实现从尾部添加字符和从头部删除字符 从尾部添加直接push进一个stack1即可 从头部删除,需要先将stack1中的字符压入stack2,然后从stack2弹…
旋转数组中的最小值 8
基于二分法 index1为首,index2为尾,indexMid指向中间 当Number[index1]大于等于Number[index2]的条件满足时  …
从尾到头打印链表 5
利用栈,倒序都可以用栈解决 先将数据一个一个压入栈 然后再一个一个弹出 另外还有一种方法是利用递归,递归其实跟栈类似 &n…
替换空格 4
先遍历每个字符统计空格数 :String.charAt() 根据空格数计算新的长度 :newLength=oriLength+2*NumOfBlank 新建一个ne…
二维数组中查找 3
先判断数组是否为空,为空返回false 不为空进入循环 获得矩阵的行数:rows=matrix.length 获得矩阵的列数:columns=matrix[0].l…
(atoi)String to Integer 49
corner case的处理 整数一般考虑两点:一点是符号,另外一点是越界 首先去掉多余的空格字符 然后读符号,可能是正号,也可能是负号…
归并排序
总结 递归 从大到小进行排序 辅助数组,将两个子数组中最右边的两个数进行比较,大的放入辅助数组中,此时辅助数组的索引也从最右边开始 也可…
利用构造函数求1到n的和 46
class ConSum{ private: static int n; static int sum; public: ConSum(){++n;sum+n} static int getSum(){return su…
合并排序的链表 17
总结 递归 比较两个链表当前节点的大小,将小的放入结果链表中 递归基石节点为空,返回另一个链表 packag…
反转链表 16
总结 定义三个类似指针的引用,一个指向当前节点,一个指向前一个节点,初始化为null,一个指向后一个节点 判定反转链表的头节点的依据是当前节点的下一个节点为null…
《剑指offer》全部题目-含Java实现
陆续刷了好久,算是刷完了《剑指offer》,以下全部AC代码,不一定性能最优,如有错误或更好解答,请留言区指出,大家共同交流,谢谢~ 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按…