剑指offer

3 最优解法空间复杂度为O(1),注意要充分利用题中数的范围特征

面试题03. 数组中重复的数字

4 对于查找数的题,不要只会想到二分,有的查找题并不适合二分法查找,

面试题04. 二维数组中的查找

5 字符串题目,很简单,直接暴力查找即可

面试题05. 替换空格

6 链表简单题,学会用递归和栈两种方法

面试题06. 从尾到头打印链表

7 由中序和前序构造二叉树,关键是要先观察出两个数据的结构,再不断缩小区间,将区间设置成左闭右开,当左端点等于右端点是返回None,

面试题07. 重建二叉树

9 这个题很巧妙,一个栈负责进元素,一个栈负责出元素,当负责出栈的没有元素时,就去负责进栈的去取,如果都为空返回-1,这样就实现了队列的从堆尾进元素和从队首出元素的功能,

面试题09. 用两个栈实现队列

10 利用动态规划最快,要学会左右同时赋值的写法,

面试题10- I. 斐波那契数列

解法同上一道题,仍是斐波那契数列,只不过初值不同而已

面试题10- II. 青蛙跳台阶问题

11 解释一下题意:在一个单调不减的数组中,截取左边的任意一段放到右边合成一个新的数组,注意截取的这段可以是0,

这个题是有重复数的旋转数组问题,注意还有完全是单增数组的情况(因为他是取左边的一段放到右边,可以选择不放,所以有单增的情况),不要忽略,关键是要找到正确的缩小搜索区间的条件,这需要全面的分类讨论,不可遗漏任何一种情况,

面试题11. 旋转数组的最小数字

12典型的回溯法,关键是要对遍历过的位置进行记录,遍历完后再恢复,因为有可能还要走,可以用数组记录也可以用矩阵01进行记录,

面试题12. 矩阵中的路径

27 这个题的关键是要理解节点对象的地址作用,只要将某个节点的左右节点地址互换,其左右子树就会调换

面试题27. 二叉树的镜像

28 关键是要观察出判断完对称的a b节点后,要判断a.left与b.right以及a.right与b.left,利用这个才能写递归解法,要学会return recur(L.left, R.right) and recur(L.right, R.left) 这个写法,非常重要,如果用队列的话最好是用双端队列实现,方便从左右同时进同时出,

面试题28. 对称的二叉树

57 主要是熟悉等差数列的求和公式,以及如何求首项和末项,及项数,

面试题57 - II. 和为s的连续正数序列

59 通过维护一个单调的双端队列(这里很巧妙),实现了时间和空间复杂度都是O(1)

面试题59 - II. 队列的最大值

posted on 2020-03-10 10:43  吃我一枪  阅读(104)  评论(0编辑  收藏  举报

导航