为什么要刷《剑指offer》
无论是校招还是社招,要想找大厂的技术岗位,算法题是一道必须要迈过去的坎。而学校里学习的数据结构课程还远远不够,我们需要通过刷题的方式来练习巩固。《剑指offer》这本书也是专门为此准备的,其中的题目都很经典,虽然现在有些公司会可以避开这些题目,但是很多经典题掌握之后可以做到举一反三。
这本书的优缺点
- 优点:题目非常经典,很容易在面试中被问到原题,覆盖范围还算全面,适合突击面试。
- 缺点:题目量比较少,只有几十题,缺少一些变种题加以巩固。难度差异比较大,分类不够细致,想完全掌握这些算法的话还需要做大量补充练习。
我们应该怎么刷题
- 由于每道题目都很经典,所以每道题目都需要认真做一遍。可以牛客的网站上(剑指Offer)或者 LeetCode(剑指 Offer(第 2 版))刷题的,他们俩的社区很强大,很多厉害的同学会分享解题思路。牛客网针对每个题目还会有企业相关联的笔试题,可以加深自己的掌握。如下图所示:
- 题目做完之后最好总结思路,可以通过博客记录下来,譬如可以把相似的题目或者变种题统一归纳,加深印象。
我为什么要写这个系列
其实很多人都写过关于这个系列的博客,我知道自己目前的知识储备还不能让自己很好的对外输出,给他人参考价值也不大,但是就像我在 我为什么要写博客?里面写的那样,更多是一个总结归纳的过程,整合一些优质的题解。将这些成熟的知识体系掌握。
在写博客的过程中,我也发现了一些问题,就是遇到一个困难总是会涉及到很多问题,而这些问题是很难通过这一个题目就掌握的,可能需要做更多的题目并且整理归纳,总结背后的思想,但这也是一个机会,虽然《剑指offer》只有60多题目,但是这些完全吃透的话,需要刷更多类似的题目来巩固。
题解目录
题目的目录是和牛客网的题目顺序一致的。加 * 的标题是还需要改进完善的。
数组相关题目
- 二维数组中的查找
- 旋转数组的最小数字
- 数组中重复的数字
- 数字在排序数组中出现的次数
- 数组中只出现一次的数字
- 顺时针打印矩阵
- 最小的K个数
- 数组中出现次数超过一半的数字
- 数组中的逆序对
- 调整数组顺序使奇数位于偶数前面
- 把数组排成最小的数
- 和为S的两个数字
- 和为S的连续正数序列
- 数据流中的中位数*
链表相关题目
字符串相关题目
二叉树相关题目
- 重建二叉树
- 二叉树的深度
- 平衡二叉树
- 树的子结构
- 二叉树的镜像
- 二叉树的下一个结点
- 对称的二叉树
- 按之字形顺序打印二叉树
- 把二叉树打印成多行
- 序列化二叉树*
- 二叉搜索树的第k个结点
- 从上往下打印二叉树
- 二叉搜索树的后序遍历序列
- 二叉树中和为某一值的路径
- 二叉搜索树与双向链表