# 《剑指offer》小结

# 前言

《剑指offer》这本书适合校招练习算法和数据结构,也可以作为工作后的算法与数据结构巩固练习。

另外,附上LeetCode上剑指offer(第二版)的在线刷题链接,可在阅读完练习使用:

https://leetcode-cn.com/problemset/lcof/

# 正文

这本书的前沿部分已经总结了全书的内容。一共50个算法题,并对这些算法题进行了思路讲解。

# 版本

2012年。

# 主要内容

第 1 章介绍流程。

第 2 章梳理基础知识。

第 3 章讨论写出高质量代码的 3 个要点。从规范性、完整性和鲁棒性 3 个方面提高代码的质量。

第 4 章总结解决难题的常用思路。用画图、举例和分解复杂问题 3 种思路来解决问题。

第 5 章介绍如何优化代码的时间效率和空间效率。学会优化时间效率及空间换时间的常用算法。

第 6 章总结各项能力。学习能力和沟通能力、知识迁移能力、抽象建模能力和发散思维能力。

第 7 章是两个案例。

# 详细

题4替换空格。测试用例需包含正常情况和异常情况,且考虑时间复杂度。

题5从尾到头打印链表。后进先出,使用栈。

题6重建二叉树。前序遍历第一个数字为根节点,中序遍历找到根节点位置,从而确定左右子树,再递归解决。

题8旋转数组的最小数字。二分法。

题9斐波那契数列。递归➕循环。

题11数值的整数次方。需考虑底数为0而指数为负数的处理。

题12打印1到最大的n位数。大数问题,用字符串模拟加法并打印。

题13在O(1)时间删除链表节点。创新;用下一个节点的内容对比被删除的节点,然后把下一个节点删除。

题14调整属于顺序使偶数位于奇数之前。双指针。

题15链表中倒数第k个节点。双指针遍历。

题17合并2个排序的链表。递归。

题18树的子结构。递归。

题19二叉树的镜像。先序遍历树,递归。

题21包含min函数的栈。借用辅助栈保存最小元素。

题22栈的压入、弹出序列。举例分析,辅助栈。

题23从上往下打印二叉树。队列。

题24二叉搜索树的后序遍历序列。找出后序遍历的规律。

题25二叉树中和为某一值的路径。栈。

题26复杂链表的复制。用O(n)的空间消耗把时间复杂度由O(N^2)降低到O(n)。

题28字符串的排列。递归。

题30最小的k个数。最大堆。

题31连续子数组的最大和。动态规划。

题35第一个只出现一次的字符。哈希表。

题37两个链表的第一个公共节点。辅助栈。

题38数字在排序数组中出现的次数。二分查找、递归。

题39二叉树的深度。递归。

题46求1+2+……+n。发散思维。

Last Updated: 1/17/2021, 7:29:58 AM