分类
数组
1. 两数之和
66. 加一
11. 盛最多水的容器
283. 移动零
70. 爬楼梯
746. 使用最小花费爬楼梯
15. 三数之和(高频老题)
18. 四数之和
16. 最接近的三数之和
125. 验证回文串
238. 除自身以外数组的乘积
189. 旋转数组
88. 合并两个有序数组
26. 删除排序数组中的重复项
链表
206. 单链表反转
141. 链表中环的检测
142. 环形链表 II
234. 回文链表
19. 删除链表倒数第 n 个结点
21. 两个有序的链表合并
23. 合并K个排序链表
876. 求链表的中间结点
24. 两两交换链表中的节点
25. K 个一组翻转链表
61. 旋转链表
237. 删除链表中的节点
148. 排序链表
面试题 02.07. 链表相交
数组/链表
栈
20. 有效的括号
42. 接雨水
155. 最小栈
84. 柱状图中最大的矩形
239. 滑动窗口最大值(用双指针再做一遍)
641. 设计循环双端队列
844. 比较含退格的字符串
224. 基本计算器
682. 棒球比赛
496. 下一个更大元素 I
739. 每日温度
哈希表
1. 两数之和
242. 有效的字母异位词
49. 字母异位词分组
队列
队列/栈
堆
215. 数组中的第K个最大元素
703. 数据流中的第K大元素(小顶堆)
239. 滑动窗口最大值(栈)
递归
70. 爬楼梯(用换零钱的方法做一遍)
22. 括号生成
77. 组合
46. 全排列
47. 全排列 II
树/递归
98. 验证二叉搜索树(中序遍历)
104. 二叉树的最大深度
226. 翻转二叉树
111. 二叉树的最小深度
297. 二叉树的序列化与反序列化
236. 二叉树的最近公共祖先
235. 二叉搜索树的最近公共祖先
105. 从前序与中序遍历序列构造二叉树
94. 二叉树的中序遍历(用手动维护栈的方式遍历和莫里斯遍历做一遍)
144. 二叉树的前序遍历
590. N叉树的后序遍历
589. N叉树的前序遍历
429. N叉树的层序遍历
124. 二叉树中的最大路径和
99. 恢复二叉搜索树
230. 二叉搜索树中第K小的元素
分治
50. Pow(x, n)
78. 子集
17. 电话号码的字母组合
51. N皇后
169. 多数元素(可以用哈希表做数学统计,也可以用分治, 用分治再做一遍)
BFS/DFS
102. 二叉树的层次遍历 (高频题排名前三)
433. 最小基因变化
22. 括号生成(DFS,BFS 也可)
200. 岛屿数量(沉岛法)
515. 在每个树行中找最大值
127. 单词接龙
126. 单词接龙 II
529. 扫雷游戏
双向 BFS/DFS
ASearch
1091. 二进制矩阵中的最短路径(dp, bfs, A*)
773. 滑动谜题
37. 解数独
贪心算法
455. 分发饼干(贪心)
322. 零钱兑换(贪心、分治、动态规划)
121. 买卖股票的最佳时机(贪心、分治、动态规划)
122. 买卖股票的最佳时机 II
55. 跳跃游戏
二分查找
使用二分查找,寻找一个半有序数组 [4, 5, 6, 7, 0, 1, 2] 中间无序的地方
69. x 的平方根(二分查找)
367. 有效的完全平方数(动态规划,位运算也可)
33. 搜索旋转排序数组
74. 搜索二维矩阵
153. 寻找旋转排序数组中的最小值
Trie 树
208. 实现 Trie (前缀树)
79. 单词搜索
212. 单词搜索 II(分析用 Tire 树方式实现的时间复杂度)
并查集
200. 岛屿数量(染色(沉岛法,dfs/bfs)/并查集)
547. 朋友圈
动态规划
初级一维
70. 爬楼梯
1143.最长公共子序列(贪心、分治、动态规划)
120. 三角形最小路径和(贪心、分治、动态规划)
53. 最大子序和(理解一下分治的做法)
152. 乘积最大子数组(贪心,分治,动态规划)
121. 买卖股票的最佳时机
122. 买卖股票的最佳时机 II
123. 买卖股票的最佳时机 III
309. 最佳买卖股票时机含冷冻期
188. 买卖股票的最佳时机 IV
714. 买卖股票的最佳时机含手续费
高级多维
198. 打家劫舍
72. 编辑距离(重点)
62.不同路径
63.不同路径 II(要求写出状态方程)
322. 零钱兑换(贪心、分治、动态规划)
300. 最长上升子序列
115. 不同的子序列
354. 俄罗斯套娃信封问题
搜索
70. 爬楼梯(动态规划, 递归去重也可,转换零钱兑换问题)
剪枝
22. 括号生成(动态规划,剪枝)
51(n皇后)
36. 有效的数独
37. 解数独
启发式搜索(A*)
1091. 二进制矩阵中的最短路径(dp, bfs, A*)
位运算
136. 只出现一次的数字
190. 颠倒二进制位
191. 位1的个数
231. 2的幂
338. 比特位计数
51. N皇后(n皇后终极解法)
52. N皇后 II
排序
242. 有效的字母异位词
56. 合并区间
493. 翻转对(树状数组/归并排序)
字符串
两个字符串变换问题,一般要转成一个二维数组,两个字符串分别为字符串的行和列
基础问题
387. 字符串中的第一个唯一字符
8. 字符串转换整数 (atoi)
字符串操作问题
14. 最长公共前缀
344. 反转字符串
151. 翻转字符串里的单词
Anagram 异位词问题
Palindrome 回文串问题
最长子串、子序列问题
字符串 +DP 问题
10. 正则表达式匹配(贪心、分治、动态规划)
115. 不同的子序列
其它
未整理
2. 两数相加
7. 整数反转
8. 字符串转换整数 (atoi)
32. 最长有效括号
1137. 第 N 个泰波那契数
34. 在排序数组中查找元素的第一个和最后一个位置
41. 缺失的第一个正数(数组)
43. 字符串相乘
415.add-strings
179.largest-number
449.serialize-and-deserialize-bst
292.nim-game
75.sort-colors
388.longest-absolute-file-path
164.maximum-gap
88.merge-sorted-array
557.reverse-words-in-a-string-iii
64. 最小路径和(贪心、分治、动态规划)
632. 最小区间
150. 逆波兰表达式求值(栈)
8. 字符串转换整数 (atoi)(字符串)
112. 路径总和
451. 根据字符出现频率排序
966. 元音拼写检查器
705. 设计哈希集合
347. 前 K 个高频元素
295. 数据流的中位数
421. 数组中两个数的最大异或值
402. 移掉K位数字
621. 任务调度器
435. 无重叠区间
93. 复原IP地址
1206. 设计跳表
207. 课程表
787. K 站中转内最便宜的航班
743. 网络延迟时间
28. 实现 strStr()
30. 串联所有单词的子串