《剑指 Offer(第 2 版)》系列

本书精选谷歌、微软等知名 IT 企业的典型面试题,系统地总结了如何在面试时写出高质量代码,如何优化代码效率,以及分析、解决难题的常用方法。
English Version
题解
列表所有题解均由 开源社区 Doocs 贡献者提供,正在完善中,欢迎贡献你的题解!
快速搜索题号、题解、标签等,请善用 Control + F(或者 Command + F)。
| 题号 |
题解 |
标签 |
难度 |
| 03 |
数组中重复的数字 |
数组,哈希表 |
简单 |
| 04 |
二维数组中的查找 |
数组,双指针 |
中等 |
| 05 |
替换空格 |
|
简单 |
| 06 |
从尾到头打印链表 |
|
简单 |
| 07 |
重建二叉树 |
树,递归 |
中等 |
| 09 |
用两个栈实现队列 |
栈,设计 |
简单 |
| 10- I |
斐波那契数列 |
递归 |
简单 |
| 10- II |
青蛙跳台阶问题 |
递归 |
简单 |
| 11 |
旋转数组的最小数字 |
二分查找 |
简单 |
| 12 |
矩阵中的路径 |
动态规划 |
中等 |
| 13 |
机器人的运动范围 |
|
中等 |
| 14- I |
剪绳子 |
数学,动态规划 |
中等 |
| 14- II |
剪绳子 II |
数学,动态规划 |
中等 |
| 15 |
二进制中 1 的个数 |
位运算 |
简单 |
| 16 |
数值的整数次方 |
递归 |
中等 |
| 17 |
打印从 1 到最大的 n 位数 |
数学 |
简单 |
| 18 |
删除链表的节点 |
链表 |
简单 |
| 19 |
正则表达式匹配 |
动态规划 |
困难 |
| 20 |
表示数值的字符串 |
数学 |
中等 |
| 21 |
调整数组顺序使奇数位于偶数前面 |
|
简单 |
| 22 |
链表中倒数第 k 个节点 |
链表,双指针 |
简单 |
| 24 |
反转链表 |
链表 |
简单 |
| 25 |
合并两个排序的链表 |
分治算法 |
简单 |
| 26 |
树的子结构 |
树 |
中等 |
| 27 |
二叉树的镜像 |
树 |
简单 |
| 28 |
对称的二叉树 |
树 |
简单 |
| 29 |
顺时针打印矩阵 |
数组 |
简单 |
| 30 |
包含 min 函数的栈 |
栈,设计 |
简单 |
| 31 |
栈的压入、弹出序列 |
|
中等 |
| 32 - I |
从上到下打印二叉树 |
树,广度优先搜索 |
中等 |
| 32 - II |
从上到下打印二叉树 II |
树,广度优先搜索 |
简单 |
| 32 - III |
从上到下打印二叉树 III |
树,广度优先搜索 |
中等 |
| 33 |
二叉搜索树的后序遍历序列 |
|
中等 |
| 34 |
二叉树中和为某一值的路径 |
树,深度优先搜索 |
中等 |
| 35 |
复杂链表的复制 |
链表 |
中等 |
| 36 |
二叉搜索树与双向链表 |
分治算法 |
中等 |
| 37 |
序列化二叉树 |
树,设计 |
困难 |
| 38 |
字符串的排列 |
回溯算法 |
中等 |
| 39 |
数组中出现次数超过一半的数字 |
位运算,分治算法 |
简单 |
| 40 |
最小的 k 个数 |
堆,分治算法 |
简单 |
| 41 |
数据流中的中位数 |
堆,设计 |
困难 |
| 42 |
连续子数组的最大和 |
分治算法,动态规划 |
简单 |
| 43 |
1 ~ n 整数中 1 出现的次数 |
数学 |
困难 |
| 44 |
数字序列中某一位的数字 |
数学 |
中等 |
| 45 |
把数组排成最小的数 |
排序 |
中等 |
| 46 |
把数字翻译成字符串 |
|
中等 |
| 47 |
礼物的最大价值 |
动态规划 |
中等 |
| 48 |
最长不含重复字符的子字符串 |
哈希表,双指针 |
中等 |
| 49 |
丑数 |
数学 |
中等 |
| 50 |
第一个只出现一次的字符 |
哈希表 |
简单 |
| 51 |
数组中的逆序对 |
|
困难 |
| 52 |
两个链表的第一个公共节点 |
链表 |
简单 |
| 53 - I |
在排序数组中查找数字 I |
数组,二分查找 |
简单 |
| 53 - II |
0 ~ n-1 中缺失的数字 |
数组,二分查找 |
简单 |
| 54 |
二叉搜索树的第 k 大节点 |
树 |
简单 |
| 55 - I |
二叉树的深度 |
树,深度优先搜索 |
简单 |
| 55 - II |
平衡二叉树 |
树,深度优先搜索 |
简单 |
| 56 - I |
数组中数字出现的次数 |
|
中等 |
| 56 - II |
数组中数字出现的次数 II |
|
中等 |
| 57 |
和为 s 的两个数字 |
|
简单 |
| 57 - II |
和为 s 的连续正数序列 |
|
简单 |
| 58 - I |
翻转单词顺序 |
字符串 |
简单 |
| 58 - II |
左旋转字符串 |
字符串 |
简单 |
| 59 - I |
滑动窗口的最大值 |
栈 |
困难 |
| 59 - II |
队列的最大值 |
栈 |
中等 |
| 60 |
n 个骰子的点数 |
|
中等 |
| 61 |
扑克牌中的顺子 |
|
简单 |
| 62 |
圆圈中最后剩下的数字 |
|
简单 |
| 63 |
股票的最大利润 |
动态规划 |
中等 |
| 64 |
求 1+2+…+n |
|
中等 |
| 65 |
不用加减乘除做加法 |
|
简单 |
| 66 |
构建乘积数组 |
|
中等 |
| 67 |
把字符串转换成整数 |
数学,字符串 |
中等 |
| 68 - I |
二叉搜索树的最近公共祖先 |
树 |
简单 |
| 68 - II |
二叉树的最近公共祖先 |
树 |
简单 |
版权
本项目著作权归 GitHub 开源社区 Doocs 所有,商业转载请联系 @yanglbme 获得授权,非商业转载请注明出处。
联系我们
欢迎各位小伙伴们添加 @yanglbme 的个人微信(微信号:YLB0109),备注 「leetcode」。后续我们会创建算法、技术相关的交流群,大家一起交流学习,分享经验,共同进步。
许可证
知识共享 版权归属-相同方式共享 4.0 国际 公共许可证