[剑指-Offer] 0. 《剑指-Offer》面试题题解汇总

剑指-Offer

该专栏收录了学习《剑指-Offer》第二版书中的面试题,书中编程题是新大多以 LeetCode 对应系列的线上 OJ 给解答,下面会以章节的形式给出博主总结的本书中各个面试题的链接,方便对应查阅、学习。

第 2 章:面试需要的基础知识

2.2 编程语言

  • [剑指-Offer] 1. 赋值运算符函数(编程语言、细节处理、代码优化)

  • [剑指-Offer] 2. 实现Singleton模式(单例模式、细节处理、代码优化)

2.3 数据结构

  • [剑指-Offer] 3. 数组中重复的数字(哈希、抽屉原理、代码优化、多方法)

  • [剑指-Offer] 4. 二维数组中的查找(数学、二分法)

  • [剑指-Offer] 5. 替换空格(反向思维、代码优化、多方法)

  • [剑指-Offer] 6. 从尾到头打印链表(链表逆置、递归、鲁棒性、多方法)

  • [剑指-Offer] 7. 重建二叉树(二叉树、递归建树)

  • [剑指-Offer] 8. 二叉树的下一个结点(多情况分析、画图分析)

  • [剑指-Offer] 9. 用两个栈实现队列(栈、队列、模拟)

2.4 算法和数据操作

  • [剑指-Offer] 10. I. 斐波那契数列及II. 青蛙跳台阶问题(递归、fib快速计算、fib求和公式、fib通项公式)

  • [剑指-Offer] 11. 旋转数组的最小数字(二分法、分治、递归)

  • [剑指-Offer] 12. 矩阵中的路径(回溯、DFS、递归、代码优化)

  • [剑指-Offer] 13. 机器人的运动范围(回溯、DFS、递归、代码优化)

  • [剑指-Offer] 14. 剪绳子I、剪绳子II(数学、动态规划、贪心、代码优化)

  • [剑指-Offer] 15. 二进制中1的个数(位运算、技巧、代码优化)

第 3 章:高质量的代码

3.3 代码的完整性

  • [剑指-Offer] 16. 数值的整数次方(快速幂、递归、代码优化、多方法)

  • [剑指-Offer] 17. 打印从1到最大的n位数(高精度、全排列、代码优化、多方法)

  • [剑指-Offer] 18. 删除链表的节点(链表删除、递归、代码优化)

  • [剑指-Offer] 19. 删除链表的节点(递归、动态规划、多方法)

  • [剑指-Offer] 20. 表示数值的字符串(多情况分析、分类讨论、代码优化)

  • [剑指-Offer] 21. 调整数组顺序使奇数位于偶数前面(双指针、解耦)

3.4 代码的鲁棒性

  • [剑指-Offer] 22. 链表中倒数第k个节点(常规解法、特殊情况、鲁棒性)

  • [剑指-Offer] 23. 链表中环的入口结点(带环链表、快慢指针、代码优化)

  • [剑指-Offer] 24. 反转链表(常规解法、特殊情况、鲁棒性)

  • [剑指-Offer] 25. 合并两个排序的链表(递归、迭代、常规解法)

  • [剑指-Offer] 26. 树的子结构(递归、代码简化)

第 4 章:解决面试题的思路

4.2 画图让抽象问题形象化

  • [剑指-Offer] 27. 二叉树的镜像(递归、常规解法)

  • [剑指-Offer] 28. 对称的二叉树(递归、常规解法)

  • [剑指-Offer] 29. 顺时针打印矩阵(边界情况、代码优化、多方法)

4.3 举例让抽象问题具体化

  • [剑指-Offer] 30. 包含min函数的栈(边界情况,代码优化)

  • [剑指-Offer] 31. 栈的压入、弹出序列(模拟、常规解法)

  • [剑指-Offer] 32. I. II.III从上到下打印二叉树(层序遍历、栈、常规解法)

  • [剑指-Offer] 33. 二叉搜索树的后序遍历序列(递归、单调栈、代码优化)

  • [剑指-Offer] 34. 二叉树中和为某一值的路径(递归、常规解法)

4.4 分解让复杂问题简单化

  • [剑指-Offer] 35. 复杂链表的复制(HashMap、递归、代码优化)

  • [剑指-Offer] 36. 二叉搜索树与双向链表(中序遍历、递归)

  • [剑指-Offer] 37. 序列化二叉树(层序遍历、前序遍历、递归、特殊情况)

  • [剑指-Offer] 38. 字符串的排列(全排列、递归、回溯、巧妙解法)

第 5 章:优化时间和空间效率

5.2 时间效率

  • [剑指-Offer] 39. 数组中出现次数超过一半的数字(多数投票算法、sort函数、代码优化)

  • [剑指-Offer] 40. 最小的k个数(快速排序、海量数据、巧妙解法)

  • [剑指-Offer] 41. 数据流中的中位数(堆、泛型算法、顶级解法)

  • [剑指-Offer] 42. 连续子数组的最大和(前缀和、双指针、动态规划、代码优化)

  • [剑指-Offer] 43. 1–n整数中1出现的次数(数学、思维、大数、巧妙解法)

  • [剑指-Offer] 44. 数字序列中某一位的数字(数学、思维、巧妙解法)

  • [剑指-Offer] 45. 把数组排成最小的数(数学、思维、lambada表达式、巧妙解法)

  • [剑指-Offer] 46. 把数字翻译成字符串(思维、递归、巧妙解法)

  • [剑指-Offer] 48. 最长不含重复字符的子字符串(滑动窗口、哈希映射、常规解法)

5.3 时间效率与空间效率的平衡

  • [剑指-Offer] 49. 丑数(思维、代码优化、巧妙解法)

  • [剑指-Offer] 50. 第一个只出现一次的字符(哈希映射、常规解法)

  • [剑指-Offer] 51. 数组中的逆序对(思维、归并排序、巧妙解法)

  • [剑指-Offer] 52. 两个链表的第一个公共节点(思维、快慢指针、巧妙解法)

第 6 章:面试中的各项能力

6.3 知识迁移能力

  • [剑指-Offer] 53. I. 在排序数组中查找数字 I 及 II. 0~n-1中缺失的数字(二分法、代码优化、巧妙解法)

  • [剑指-Offer] 54. 二叉搜索树的第k大节点(中序遍历、常规解法)

  • [剑指-Offer] 55. I. 二叉树的深度及II. 平衡二叉树(二叉树、后序遍历、代码优化、巧妙解法)

  • [剑指-Offer] 56. I. 数组中数字出现的次数及II. 数组中数字出现的次数 II(位运算、异或、顶级解法)

  • [剑指-Offer] 57. 和为s的两个数字及II. 和为s的连续正数序列(数学、二分法、滑动窗口、巧妙解法)

  • [剑指-Offer] 58. I. 翻转单词顺序及II. 左旋转字符串(思维、字符串处理、巧妙解法)

  • [剑指-Offer] 59. I. 滑动窗口的最大值及II. 队列的最大值(模拟、单调队列、常规解法)

6.4 抽象建模能力

  • [剑指-Offer] 60. n个骰子的点数(递归、动态规划、巧妙解法)

  • [剑指-Offer] 61. 扑克牌中的顺子(模拟+常规解法)

  • [剑指-Offer] 62. 圆圈中最后剩下的数字(数学、环形链表、约瑟夫环、巧妙解法)

  • [剑指-Offer] 63. 股票的最大利润(数组、数学、动态规划、顶级解法)

6.5 发散思维能力

  • [剑指-Offer] 64. 求1+2+…+n(思维、顶级解法)

  • [剑指-Offer] 65. 不用加减乘除做加法(位运算、思维、顶级解法)

  • [剑指-Offer] 66. 构建乘积数组(思维、模拟、顶级解法)

第 7 章:两个面试案例

7.1 案例一

  • [剑指-Offer] 67. 把字符串转换成整数(模拟、istringstream函数、巧妙解法)

7.1 案例二

  • [剑指-Offer] 68. I. 二叉搜索树的最近公共祖先及II. 二叉树的最近公共祖先(二叉树、LCA问题、递归优化、巧妙解法)


读书总结

看书 + OJ 刷题,从 2020-02-14 开始,至 2020-03-11 结束,中间几天整理了排序算法及其它事情,导致进度偏慢了一些,不过也是收获颇丰。书中的题非常经典,讲解给人以豁然开朗的感觉,这应该就是该书这么多年经久不衰的最大竞争力吧。

过段时间进行复看,加深理解并寻求更好的解法,或是整理下排版。

所有的面试题 OJ,均给出 OJ 原地址链接,方便读者进行测试。每道题也有博主的 题目解析 及经过 OJ 测试的 源代码在部分困难问题上博主参考本书作者的写法、题解大佬的写法及其它网上资源,在此十分感谢大家的帮助。

同时,我也将代码上传到我的 GitHub 仓库:sword_to_offer ,欢迎大家给力 star !!!

希望博主的这些博文能给你带来收获。

Y-puyu — 2020年3月11日

你可能感兴趣的:(#,《剑指-Offer》(第二版))