本书精选谷歌、微软等知名 IT 企业的典型面试题,系统地总结了如何在面试时写出高质量代码,如何优化代码效率,以及分析、解决难题的常用方法。
English Version
以下所有题目均来源 LeetCode 中国官网,题解由 doocs/leetcode 贡献者 提供,正在完善中,欢迎贡献你的题解!
快速搜索题号、题解、标签等,请善用 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 获得授权,非商业转载请注明出处。