剑指offer总结

Table of Contents

剑指offer

  • 二维数组中的查找
    • 左下角
    • 行和列容易混淆
    • col和row两个指针
    • 循环条件的时候容易写错
  • 替换空格
    • 考察数组的理解
    • 不要使用正则
    • 在末尾填充一些无关字符串
  • 从尾到头打印链表
    • 考察了栈的特点
    • 注意使用unshift
  • 重建二叉树
    • 比较难理解
    • 充分利用前序遍历的递归
  • 用两个栈实现队列
    • 先进后出,在一次”先进后出“,变为先进先出
  • 旋转数组的最小数字
    • 要求时间复杂度达到O(lgn)
    • 只能使用二分
    • 二分比O(n)多一种情况考虑
    • 边界条件需要考虑
    • 不会写二分查找
  • 斐波那契数列
    • prev, curr双指针
    • for循环从0开始
  • 跳台阶
    • 斐波那契数列
  • 变态跳台阶
    • 找规律,位运算,[[1,1,1,1],[2,2],[1,1,2],[1,2,1],[2,1,1],[1,3],[3,1],[4]]
  • 矩形覆盖
    • 斐波那契数列
    • 0不在斐波那契数列中
  • 二进制中1的个数
    • 利用了标志位左移&1的思想(这是一种比较耗时的做法,每次都要循环32次,即使只有一个1的时候)
    • n = (n-1)&n