跳转至

剑指 Offer*

刷 leetcode 实在是太费劲了,还是先刷这个吧,功利一些。

刷 TMD!

刷了一部分 leetcode 的感觉不太行,有些细节似乎被去掉了,还是看书吧。

Tips*

  1. 代码的鲁棒性,考虑边界条件、特殊输入及错误处理。
  2. 通过画图、举例和分解使抽象复杂的问题具体化、简单化。
  3. C++ 关键字的理解,如类型转换、sizeof。
  4. 二分、归并、快排
  5. 回溯 递归、栈模拟
  6. 动态规划、贪心

题目总结*

Problems Discription
01.赋值运算符函数 赋值运算符重载,内存泄漏问题。
03.数组中的重复数字 值在下标范围内,原地交换即可。
04.二维数组的查找 从右上或左下角开始搜索即可,也可以二分。
05.替换空格 原地修改,从后往前填充,类似的有合并有序数组。
06.从尾到头打印链表 迭代反转链表、头插法新建链表、栈。
07.重建二叉树 经典递归建树,迭代方法还没太整明白。
08.二叉树的下一个节点 右子树的最左结点或当前结点所在左子树的根结点。
09.用两个栈实现队列 输出栈空时把输入栈移到输出栈即可。
10.斐波那契数列 递归或迭代,或者使用矩阵快速幂计算。
11.旋转数组的最小数字 遍历或二分查找,考虑两端相等的情况。
12.矩阵中的路径 dfs 回溯算法。
13.机器人的运动范围 dfs 或 bfs。
14.剪绳子 动态规划,或者用数学思想 尽可能多的 3。
15.二进制中 1 的个数 n & (n - 1) 的运算每次去掉最右侧的 1。
16.数值的整数次方 快速幂算法,处理好边界情况,浮点数判等不要用 ==
17.打印从 1 到最大的 n 位数 字符串处理大数,或者递归全排列。
18.删除链表的结点 给定值只能遍历,给定非尾结点可以使用后继元素替换当前
19.正则表达式匹配 递归,动态规划

最后更新: July 23, 2022