
剑指Offer
剑指Offer
AlphaSZH
bruce's fans
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指Offer——斐波那契数列
思路:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2).首先想到递归,但是会产生一些冗余计算,复杂度是O(n^2),所以用迭代方法,让f(0)=0,f(1)=1作为已知条件,从下往上算。 [外链图片转存失败(img-FKTTu1CH-1564393199043)(https://www.cuijiahua.com/wp-content/uploads/2017/11/basis_7...原创 2019-07-29 17:40:55 · 130 阅读 · 0 评论 -
剑指Offer——旋转数组的最小数字
思路:采用二分查找,分这几种情况。 1. 保证旋转数组(a[low]>=a[high]),若不保证,则没有旋转,是单调递增的,直接输出第一个数;否则下面几种情况; 2. 只剩两个数,第二个肯定最小; 3. a[low]=a[mid]=a[high],如[1,1,1,0,1],最小值不好判断,只能挨个找,因为a[low]>=a[high],所以让low++; 4. a[mid]>=...原创 2019-07-28 16:43:03 · 97 阅读 · 0 评论 -
剑指Offer-用两个栈实现队列
思路:一个栈s1入队列,一个栈s2出队列。入队列时,把s2全部倒在s1中,然后将入队列的数压在s1中;出队列时,把s1全部倒在s2中,取s2栈顶元素出队列。 class Solution { public: void push(int node) { while(!s2.empty()) { s1.push(s2.top()); ...原创 2019-07-27 15:36:26 · 85 阅读 · 0 评论 -
剑指offer——重建二叉树
思路:知道前序和中序求二叉树,我觉得主要是弄清前序序列和中序序列的长度区间。首先在前序里面找根节点,在中序里面找左右子树;在中序序列里面找到根节点所在的位置,求出左子树长度和右子树长度,然后递归建树。 TreeNode* reConstructBinaryTreeCore(vector<int> pre, int preL, int preH, vector<int> vi...原创 2019-07-27 15:21:41 · 106 阅读 · 0 评论 -
剑指offer——替换空格
思路:遍历字符串找出空格数目count,原长度+count*2=替换后长度。从后往前插。 void replaceSpace(char *str,int length) { if(length==0||str==NULL) return; int count=0; for(int i=0;i<length;i++) ...原创 2019-07-27 11:33:50 · 113 阅读 · 0 评论 -
剑指offer——二维数组中的查找
思路:考虑从四个角遍历,首先去除左上角和右下角的考虑,因为在左上角的走向都是递增的,在右下角的走向都是递减的,没法判断往哪个线路走;所以要考虑从另外两个角出发。 bool Find(int target, vector<vector<int> > array) { int row = array.size(); if(row==0) ...原创 2019-07-27 11:12:36 · 105 阅读 · 0 评论