Skip to content

Latest commit

 

History

76 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

leetcode-solution

A brief introduction to leetcode problems.
Last Updated: 2023.10.02

谨以此repo献给我的女朋友,以及为了拿到心仪的offer一直不断拼搏的小伙伴。

Data Structures and Algorithms(持续更新)

数据结构索引根据不同的数据结构与算法技巧进行索引,复习更有针对性。
面试中出现的算法题记录了面试中出现过的算法题。

Shell

力扣上Shell编程题不算多,可以点击这里查看。应对笔试/面试,更多还是要学习相应数据结构与算法的知识。

SQL

SQL的题目直接学习专项突破「SQL」,可以点击这里查看。

力扣题库及其考察的知识点(持续更新):

题目名称 考察知识点 说明 关联题型 答案
1. 两数之和 哈希表 Hash的思想:将键与值匹配,实现快速查找的效果 170 Java
2. 两数相加 链表遍历 ~ 445 Java
3. 无重复字符的最长子串 滑动窗口、(前后)双指针 ~ 76 Java
4. 寻找两个正序数组的中位数 二分查找 ~ ~ Java
5. 最长回文子串 (字符串的)动态规划 这类动态规划题只能多练习掌握 10, 647 Java
6. Z 字形变换 模拟 数学模拟,很朴素的思想 ~ Java
7. 整数反转 模拟 ~ ~ Python
8. 字符串转换整数 (atoi) 自动机 很难想到的一个方法,编译原理里面的 ~ Java
9. 回文数 模拟 ~ ~ Python
10. 正则表达式匹配 (字符串的)动态规划 只能多练找感觉 44 Java
11. 盛最多水的容器 双指针模拟 ~ ~ Java
12. 整数转罗马数字 模拟 ~ 13 Java
13. 罗马数字转整数 模拟 ~ 12 Java Python
14. 最长公共前缀 分治,横向扫描、纵向扫描 掌握分治的思想 ~ Python
15. 三数之和 双指针 利用排序和双指针减少一次遍历 16, 18 Java Python
16. 最接近的三数之和 双指针 ~ 15, 18 Java
17. 电话号码的字母组合 回溯 回溯方法很适合遍历找到所有解 46 Java
18. 四数之和 双指针 ~ 15, 16 Java
19. 删除链表的倒数第 N 个结点 (前后)双指针 前后双指针的一个很巧妙的应用 ~ Java
20. 有效的括号 括号匹配的一个很经典的例子,用栈来实现 22, 32, 224, 394 Java Python
21. 合并两个有序链表 递归、迭代 这道题的迭代也很经典 23 Java Python
22. 括号生成 回溯 ~ 20, 32 Java
23. 合并K个升序链表 分治、优先队列 优先队列笔试挺喜欢考的 21 Java
24. 两两交换链表中的节点 迭代、递归 迭代更容易想到 ~ Java
25. K 个一组翻转链表 递归 思路是模拟,实现用递归或者迭代 24, 206 Java
26. 删除有序数组中的重复项 (快慢)双指针 ~ 27, 80 Java Python
27. 移除元素 (快慢)双指针 ~ 26, 88 Java Python
28. 实现 strStr() KMP算法 KMP算法是字符串匹配的经典算法,Python的find函数背后就是KMP ~ Python
29. 两数相除 二分法 ~ ~ Java
31. 下一个排列 扫描 思路不太容易想,但看了题解又觉得思想很朴素 ~ Java
32. 最长有效括号 动态规划 好几个括号题,但是思路都不一样 20, 22 Java
33. 搜索旋转排序数组 二分查找 二分查找适合有序表的查找 34, 35, 81 Java
34. 在排序数组中查找元素的第一个和最后一个位置 二分查找 ~ 33, 35 Java
35. 搜索插入位置 二分查找 一道不错的训练二分查找的题目 33, 34 Python
36. 有效的数独 ~ 难点在于数独行与列的表示 37 Java
37. 解数独 回溯 ~ 36 Java
38. 外观数列 模拟 答案二是面向测试用例编程 ~ Java
39. 组合总和 回溯 ~ ~ Java
40. 组合总和 II 回溯 需要剪枝 78 Java
41. 缺失的第一个正数 ~ ~ 287, 442, 448 Java
42. 接雨水 动态规划,双指针 模拟也能解决问题 ~ Java
43. 字符串相乘 ~ 字符串的加法与乘法,有时候用这种方法解决溢出问题 415 Java
44. 通配符匹配 动态规划 难在*号的处理 10 Java
45. 跳跃游戏 II 贪心 每一步选择将来跳的远的格子 55 Java
46. 全排列 回溯 ~ 17, 77, 78 Java Python
47. 全排列 II 回溯 ~ 40, 46, 60 Java
48. 旋转图像 模拟 有技巧的模拟 ~ Java
49. 字母异位词分组 计数,Hash 手动编写 Hash 函数的难点在于解决哈希冲突 1, 438, 567 Java
50. Pow(x, n) 快速幂算法 分治思想,同时了解迭代思想背后的数学原理 ~ Java
51. N 皇后 回溯 学会使用位运算剪枝 52 Java
52. N皇后 II 回溯 学会使用位运算剪枝 51 Java
53. 最大子数组和 动态规划 这道题也可以利用线段树来做 ~ Java Python
54. 螺旋矩阵 模拟,DFS 本质是遍历 2061 Java
55. 跳跃游戏 贪心,动态规划 贪心时间复杂度$O(n)$,动态规划时间复杂度$O({n^2})$ 45 Java
56. 合并区间 模拟 贪心,排序 57 Java
57. 插入区间 模拟 贪心,排序 56 Java
58. 最后一个单词的长度 遍历 此题没什么难度 ~ Python
59. 螺旋矩阵 II 模拟 ~ 54 Java
60. 排列序列 回溯 全排列的题目 46, 47 Java
61. 旋转链表 双指针 ~ ~ Java
62. 不同路径 DFS,动态规划 DFS会超时,用动态规划 63, 64 Java
63. 不同路径 II DFS,动态规划 DFS会超时,用动态规划 62, 64 Java
64. 最小路径和 动态规划 ~ 62, 63 Java
66. 加一 模拟 ~ ~ Python
67. 二进制求和 位运算,模拟 模拟补位这个思想特挺好想的,位运算需要一定技巧,最好也掌握 137, 260, 421, 187, 318 Python
68. 文本左右对齐 贪心 贪心体现在每一行的单词尽可能的多 ~ Java
69. x 的平方根 模拟 牛顿迭代法是一个不错的方法,C语言课堂上也是这么教的 ~ Python
70. 爬楼梯 动态规划,递归 经典的递归题目,直接递归重复计算太多超时 509 Python
71. 简化路径 先根据有效 / 拆分路径,简化问题 224, 394 Java
72. 编辑距离 动态规划 挺不好理解的 ~ Java
73. 矩阵置零 模拟 利用数组自身的空间存储状态信息,节省空间 ~ Java
74. 搜索二维矩阵 二分查找 ~ 240 Java
75. 颜色分类 双指针 用指针进行模拟更简单一些 ~ Java
76. 最小覆盖子串 滑动窗口 ~ 3 Java
77. 组合 回溯 有着不同的考虑问题的思路 78, 216 Java
78. 子集 回溯 和46题一样,是一道经典的回溯问题 46, 77 Java
79. 单词搜索 DFS ~ 62, 63, 64, 200 Java
80. 删除有序数组中的重复项 II 双指针 ~ 26 Java
81. 搜索旋转排序数组 II 二分查找 ~ 33 Java
82. 删除排序链表中的重复元素 II 模拟 ~ 83 Java
83. 删除排序链表中的重复元素 模拟 ~ 82 Java
84. 柱状图中最大的矩形 单调栈 ~ 85, 1019 Java
85. 最大矩形 单调栈 本质和84题居然相同,思路不太容易想 84 Java
86. 分隔链表 链表 链表题利用虚结点可以简化问题 ~ Java
87. 扰乱字符串 动态规划 理解如何将问题划分为更小的子问题的,记忆化搜索DP ~ Java
88. 合并两个有序数组 双指针 ~ 26, 27 Java Python
89. 格雷编码 回溯,位运算 根据生成公式也可以直接生成 ~ Java
90. 子集 II 回溯 掌握二进制枚举这种思路 77, 78 Java
91. 解码方法 动态规划 分情况讨论的状态转移 ~ Java
92. 反转链表 II 递归 ~ 25, 206 Java
93. 复原 IP 地址 回溯 利用IP特征,3层for循环是一个很朴素的思路 ~ Java
94. 二叉树的中序遍历 二叉树的遍历 二叉树的先根、中根、后根遍历本质都是DFS 98, 101 Java
95. 不同的二叉搜索树 II 递归 树的问题,优先选择递归 ~ Java
96. 不同的二叉搜索树 动态规划,卡塔兰数 题目本质为知道中根遍历的结果,一共有多少种可能的二叉树。卡塔兰数的应用 ~ Java
98. 验证二叉搜索树 中根遍历 二叉搜索树的中根遍历结果是递增 94, 99 Java
99. 恢复二叉搜索树 中根遍历 找出交换的位置 94, 98 Java
100. 相同的树 递归 也可以遍历 ~ Java
101. 对称二叉树 二叉树的遍历 二叉树遍历的主要方法:直接递归、用模拟递归 94, 98 Java
102. 二叉树的层序遍历 二叉树的层次遍历 层次遍历的本质是BFS 103, 107 Java
103. 二叉树的锯齿形层序遍历 二叉树的层次遍历 ~ 102, 107 Java
104. 二叉树的最大深度 递归,DFS,BFS 还是喜欢递归的思路 111, 257 Java
105. 从前序与中序遍历序列构造二叉树 利用先根遍历和中根遍历 配上Hash可以省去查找的时间 106, 1008, 1028 Java
106. 从中序与后序遍历序列构造二叉树 掌握后根遍历和中根遍历 ~ 105, 1008, 1028 Java
107. 二叉树的层序遍历 II 二叉树的层次遍历 ~ 102, 107 Java
108. 将有序数组转换为二叉搜索树 递归 高度平衡二叉搜索树 109 Java
109. 有序链表转换二叉搜索树 递归 高度平衡二叉搜索树,快速找链表的中间结点 108, 876 ava
110. 平衡二叉树 递归 本质上确定树高 104, 111 Java
111. 二叉树的最小深度 递归 可以采用DFS遍历并实时更新最短路径 104, 257 Java
113. 路径总和 II DFS 树的遍历,递归思路 ~ Java
114. 二叉树展开为链表 先根遍历 这道题的思路有很多,个人还是喜欢递归,毕竟树的问题,一般都用递归解决 ~ Java
115. 不同的子序列 动态规划 双串的动态规划 ~ Java
116. 填充每个节点的下一个右侧节点指针 树的层次遍历 ~ 102 Java
117. 填充每个节点的下一个右侧节点指针 II 树的遍历 层次遍历 ~ Java
118. 杨辉三角 模拟 根据规律计算出来即可 119 Java
119. 杨辉三角 II 模拟 倒着计算更新时不影响值的计算 118 Java
120. 三角形最小路径和 动态规划 经典的动态规划题,可以从上往下,也可以从下往上 ~ Java
121. 买卖股票的最佳时机 ~ 本质是动态规划 53, 122, 309 Java
122. 买卖股票的最佳时机 II 动态规划,贪心 多状态动态规划 309, 714 Java
123. 买卖股票的最佳时机 III 动态规划 通解是利用多状态动态规划,也可以分为2部分,每部分都用121. 买卖股票的最佳时机的方法 121, 122, 309 Java
124. 二叉树中的最大路径和 递归 这道题比较巧妙的地方在于每次递归的返回值和我们最终的结果有联系,但是不是同一个东西 ~ Java
125. 验证回文串 双指针 掌握转换大小写字符的API 151, 680 Java
128. 最长连续序列 Hash,并查集 查找型问题,利用Hash可以降低时间复杂度 1 Java
129. 求根节点到叶节点数字之和 树的遍历 DFS, BFS ~ Java
130. 被围绕的区域 DFS,BFS,并查集 本质是岛屿类问题,经典的DFS问题 695, 1020 Java
131. 分割回文串 回溯 ~ ~ Java
132. 分割回文串 II 动态规划 ~ 131 Java
133. 克隆图 图的遍历 考察了图的表示以及遍历 ~ Java
134. 加油站 贪心 本质还是模拟 ~ Java
135. 分发糖果 贪心 在满足要求的情况下,每个孩子分到的糖果尽可能少 ~ Java
136. 只出现一次的数字 位运算 异或运算满足交换律和结合律,异或运算也是一种常见的哈希函数 49 Java
137. 只出现一次的数字 II 位运算 从位运算的角度思考题目 136 Java
139. 单词拆分 动态规划 看到题目就会想到用动态规划来实现,不过状态转移方程不太好想 ~ Java
141. 环形链表 (快慢)双指针 这道题也可以当成查找已经访问的结点,用Hash做 26, 27, 88 Java
142. 环形链表 II (快慢)双指针 此处有重要的数学结论:环内相遇点到入环点的距离等于起点到入环点的距离 141, 287 Java
143. 重排链表 ~ 一道链表的综合题,解题思路较多 206, 876 Java
144. 二叉树的前序遍历 遍历 二叉树的遍历 94, 145 Java
145. 二叉树的后序遍历 遍历 二叉树的遍历 94, 144 Java
146. LRU 缓存 Hash,链表 要求查找和更新操作都要常数时间复杂度。因此需要兼具Hash链表的特征 460 Java
148. 排序链表 归并排序 时间复杂度$O({n\log_2n})$ ~ Java
150. 逆波兰表达式求值 逆波兰表达式 ~ Java
151. 颠倒字符串中的单词 双指针 熟悉字符串的相关API 125 Java
152. 乘积最大子数组 动态规划 一下子维护了两个dp数组 53 Java
155. 最小栈 辅助栈 官方题解是通过辅助栈来实现一个最小栈的结构,额外空间复杂度大,而且有点取巧的感觉,建议用所给代码解法解决,空间复杂度为常数 ~ Java
157. 用 Read4 读取 N 个字符 模拟 理解题意,模拟即可 ~ Java
159. 至多包含两个不同字符的最长子串 滑动窗口 ~ 340 Java
160. 相交链表 Hash,数学 这道题的数学没见过类似题型的话,不太好想 ~ Java
161. 相隔为 1 的编辑距离 模拟 分类讨论解决问题 ~ Java
162. 寻找峰值 二分查找 本质是二分查找,不过需要讨论的情况多了点 ~ Java
163. 缺失的区间 遍历数组 模拟,注意边界即可 ~ Java
165. 比较版本号 双指针 题目不难,主要考察了字符串表示的数比大小 415 Java
167. 两数之和 II - 输入有序数组 二分查找,双指针 双指针更利用了有序数组的性质 15, 18 Java
168. Excel表列名称 模拟 10进制与26进制的转换,注意细节就好 ~ Java
169. 多数元素 哈希表,Boyer-Moore 投票算法 ~ ~ Java
170. 两数之和 III - 数据结构设计 Hash ~ 1 Java
179. 最大数 排序 字符串比较 ~ Java
186. 翻转字符串里的单词 II 双指针 ~ 151 Java
188. 买卖股票的最佳时机 IV 动态规划 ~ 123 Java
189. 轮转数组 双指针 掌握环状方法以及数组翻转的方法 ~ Java
190. 颠倒二进制位 位运算、分治 熟悉位运算 Java
191. 位1的个数 位运算 ~ ~ Java
198. 打家劫舍 动态规划 利用滚动数组可以降低空间复杂度 ~ Java
199. 二叉树的右视图 二叉树的遍历 DFS遍历需要记录最大层数,BFS遍历需要判断是不是最右边的结点 ~ Java
200. 岛屿数量 DFS,BFS,并查集 岛屿类问题 130, 694, 695 Java
202. 快乐数 Hash,(快慢)双指针 掌握Hash和快慢双指针的思想。找规律也能很快做出来,甚至可以直接利用计算10次之后看结果是否为1进行判断 ~ Java
203. 移除链表元素 链表遍历 注意考虑特殊情况 ~ Java
206. 反转链表 递归、迭代 ~ ~ Java
207. 课程表 拓扑排序 图的相关知识,必须要会 210, 802 Java
208. 实现 Trie (前缀树) 前缀树 学习前缀树这个模型,可能会对其他字符串类型的题提供解决思路 ~ Java
209. 长度最小的子数组 前缀和,滑动窗口 经典的滑动窗口的题目 219 Java
210. 课程表 II 拓扑排序 掌握正向的拓扑排序和逆向的拓扑排序 207, 802 Java
213. 打家劫舍 II 动态规划 分为两种情况讨论 198 Java
215. 数组中的第K个最大元素 选择排序 快速排序、堆排序 ~ Java
216. 组合总和 III 回溯 剪枝进一步优化时间 77 Java
217. 存在重复元素 哈希表 此题进一步优化,只要哈希表中存在当前值即可返回真 ~ Java
219. 存在重复元素 II 滑动窗口,哈希表 利用哈希表存储下标最大值也是一个好方法 209 Java
221. 最大正方形 动态规划 重点还是找到状态以及建立状态转移方程 1277 Java
224. 基本计算器 用栈模拟括号匹配 20, 227, 394 Java
225. 用队列实现栈 栈,队列 思考如何用一个队列实现 232 Java
226. 翻转二叉树 递归 遇到二叉树最先想到的就应该是递归 101 Java Python
227. 基本计算器 II 用栈模拟运算符的优先级 224 Java
228. 汇总区间 模拟 数组 ~ Java
230. 二叉搜索树中第K小的元素 二叉搜索树 中根遍历 ~ Java
231. 2 的幂 位运算 二进制数的性质 ~ Java
232. 用栈实现队列 队列,栈 ~ 225 Java
234. 回文链表 递归、快慢指针 这道题的递归方法可以更好的了解递归的作用机理 206 Java
235. 二叉搜索树的最近公共祖先 树的遍历 二叉搜索树的性质 ~ Java
236. 二叉树的最近公共祖先 递归、哈希 对于有一一对应关系的数据存在,就应该想到哈希表 ~ Java
237. 删除链表中的节点 链表 理解题意,根据基本的链表操作即可 ~ Java
238. 除自身以外数组的乘积 左右乘积列表 学习一下这个思想 ~ Java
239. 滑动窗口最大值 优先队列 ~ 253 Java
240. 搜索二维矩阵 II 二分查找、Z 字形查找 Z 字形查找比二分查找更充分的利用矩阵的特点 74 Java
246. 中心对称数 双指针 注意特殊情况处理 ~ Java
250. 统计同值子树 动态规划,DFS 树形的动态规划 298, 549, 687 Java
252. 会议室 快速优先排序 快排是时间复杂度较低的排序算法 253 Java
253. 会议室 II 优先队列 JavaPriorityQueue是利用二叉堆实现的优先队列 ~ Java
256. 粉刷房子 动态规划 多状态动态规划 265 Java
257. 二叉树的所有路径 回溯 树的深度优先遍历 104, 111 Java
261. 以图判树 并查集 图与树的区别在于树中的任意两个节点至多只有一条路径 ~ Java
265. 粉刷房子 II 动态规划 ~ 256 Java
266. 回文排列 模拟 哈希表 ~ Java
267. 回文排列 II 回溯 运用剪枝来处理重复的情况 47 Java
269. 火星词典 图,拓扑排序 难点在于如何构建图 ~ Java
270. 最接近的二叉搜索树值 二叉树 树的遍历,二叉搜索树的性质 ~ Java
277. 搜寻名人 图的应用 邻接矩阵,入度,出度 ~ Java
278. 第一个错误的版本 二分查找 ~ ~ Java
279. 完全平方数 动态规划 这题属于完全背包问题 322,2212 Java Python
280. 摆动排序 排序 数学找规律 ~ Java
283. 移动零 双指针 此题有简易解法 27 Java
286. 墙与门 多源最短路径问题,BFS 1162 Java
287. 寻找重复数 二分查找,快慢指针 二分查找主要是问题的转化,知道自己需要找什么;快慢指针难点在于将数组转化为链表结构 142 Java
292. Nim 游戏 模拟 找规律 ~ Java
295. 数据流的中位数 大根堆与小根堆的典型应用 ~ Java
297. 二叉树的序列化与反序列化 二叉树的遍历 序列化与反序列化的关键在于空结点的存储 1028 Java
298. 二叉树最长连续序列 动态规划,DFS 树形的动态规划 337, 549 Java
300. 最长递增子序列 动态规划,贪心 ~ 435 Java
301. 删除无效的括号 DFS, BFS 此题使用DFS难在问题的建模 20, 22 Java
305. 岛屿数量 II 并查集 确定连通分量的数量是并查集的典型应用 547 Java
306. 累加数 回溯 难在问题的转化以及处理数据溢出 2 Java
309. 最佳买卖股票时机含冷冻期 动态规划 这道题的状态也需要好好构思一下 121, 122, 123, 188, 714 Java
312. 戳气球 动态规划 题目难点在于状态的建立和转移 ~ Java Python
314. 二叉树的垂直遍历 层次遍历 ~ ~ Java
317. 离建筑物最近的距离 图的遍历 BFS ~ Java
319. 灯泡开关 数学 自己试几次也能发现规律 ~ Java
322. 零钱兑换 动态规划 完全背包问题 279 Java
323. 无向图中连通分量的数目 DFS 图的表示与遍历 207, 547 Java
337. 打家劫舍 III 动态规划 树类型的动态规划和后序遍历结合起来用 298 Java
338. 比特位计数 动态规划 ~ ~ Java
340. 至多包含 K 个不同字符的最长子串 滑动窗口,哈希表 利用数组实现哈希表的功能 159, 438 Java
343. 整数拆分 动态规划 利用数学方法分析可以进一步降低时间复杂度 ~ Java
344. 反转字符串 双指针 双指针的简单应用 917 Java
345. 反转字符串中的元音字母 双指针 结合哈希表判断 ~ Java
346. 数据流中的移动平均值 模拟 队列 ~ Java
347. 前 K 个高频元素 优先队列 要求时间复杂度优于$O({n\log_2n})$,不能简单进行sort() 253 Java
349. 两个数组的交集 哈希,双指针 利用哈希表进行空间换时间 350 Java
350. 两个数组的交集 II 哈希,双指针 ~ 349 Java
351. 安卓系统手势解锁 回溯 回溯的本质就是穷举 ~ Java
354. 俄罗斯套娃信封问题 动态规划 本质是LIS问题 300, 673, 406 Java
357. 统计各位数字都不同的数字个数 排列组合 这是一道数学问题 ~ Java
366. 寻找二叉树的叶子节点 树的遍历 先根遍历就是自上而下删除叶子结点,后根遍历就是自下而上判断子树的高度 ~ Java
368. 最大整除子集 动态规划 先排序,简化问题 ~ Java
369. 给单链表加一 链表 数学 ~ Java
370. 区间加法 差分数组 利用前缀和的思想,需要借鉴和掌握 ~ Java
376. 摆动序列 贪心,动态规划 动态规划选择不同的状态,时间复杂度也不同 ~ Java
380. O(1) 时间插入、删除和获取随机元素 集合 熟悉Java集合的常见操作 ~ Java
382. 链表随机节点 水塘抽样 在未知链表长度时就用水塘抽样,当随机取得一个数的操作较多时,应用空间换时间 ~ Java
383. 赎金信 计数 哈希 ~ Java
392. 判断子序列 贪心,双指针 贪心的思想体现在每次选择左边匹配的字符 ~ Java
394. 字符串解码 括号匹配的问题 20, 224 Java
399. 除法求值 带权并查集 带权并查集需要在查找及合并时更新权值 ~ Java
400. 第 N 位数字 数学模拟,二分查找 本利用先验知识确定边界解决溢出 ~ Java
402. 移掉 K 位数字 贪心 每次删除较大的数 ~ Java
403. 青蛙过河 动态规划 ~ ~ Java
406. 根据身高重建队列 排序 难点在于问题的转化 354 Java
410. 分割数组的最大值 动态规划 拆分连续数组的题目 813 Java
413. 等差数列划分 动态规划 由于要求连续子数组,使得状态转移简单一些 ~ Java
415. 字符串相加 ~ 加法的一个技巧,对于溢出的情况很有用 43 Java
416. 分割等和子集 动态规划 0-1背包问题 494, 1230 Java
417. 太平洋大西洋水流问题 回溯 本题通过反向搜索降低时间复杂度 ~ Java
422. 有效的单词方块 模拟 字符串遍历 ~ Java
423. 从英文中重建数字 模拟 找到规律,利用哈希表实现 ~ Java
424. 替换后的最长重复字符 滑动窗口 如果一个问题暂时没有思路,可以先考虑暴力解法 ~ Java
435. 无重叠区间 贪心,动态规划 ~ 300 Java
437. 路径总和 III 前缀和 利用树的递归遍历是一个首选思路 560 Java
438. 找到字符串中所有字母异位词 滑动窗口 ~ 49, 567 Java
439. 三元表达式解析器 确定出入栈时机 ~ Java
445. 两数相加 II 链表,栈 逆序处理优先考虑栈 2 Java
448. 找到所有数组中消失的数字 ~ ~ 155 Java
449. 序列化和反序列化二叉搜索树 递归 二叉搜索树的性质,先根遍历、后根遍历都可以 536 Java
452. 用最少数量的箭引爆气球 贪心 此题排序时候注意溢出 ~ Java
455. 分发饼干 贪心 贪心的入门题 ~ Java
460. LFU 缓存 双向链表 ~ 146 Java
461. 汉明距离 位运算 题目本质就是统计一个数的二进制表示其中 1 的数目 338 Java
473. 火柴拼正方形 回溯 ~ ~ Java
484. 寻找排列 转化为栈问题 ~ Java
485. 最大连续 1 的个数 模拟 一次遍历即可 ~ Java
487. 最大连续1的个数 II 滑动窗口 ~ 424, 1004 Java
489. 扫地机器人 回溯 难点在于确定回溯时机,易错点在于需要自己实现回溯动作 2061 Java
490. 迷宫 图的遍历 DFS,BFS ~ Java
491. 递增子序列 回溯 难点在于剪枝的处理 40 Java
494. 目标和 动态规划 0-1背包问题 416, 1230 Java
499. 迷宫 III 图的加权最短路径 Dijkstra算法 ~ Java
505. 迷宫 II Dijkstra算法 需要将问题转化为有权图 ~ Java
509. 斐波那契数 动态规划,递归 记忆化递归解决了递归重复计算的问题 70 Java
518. 零钱兑换 II 动态规划 完全背包问题 ~ Java
529. 扫雷游戏 回溯 本质是岛屿类问题,特殊之处在于一次有8个方向可以遍历 ~ Java
536. 从字符串生成二叉树 递归 树的遍历 ~ Java
538. 把二叉搜索树转换为累加树 中根遍历 转化问题,就很好解决 94 Java
540. 有序数组中的单一元素 二分查找 先通过分析确定待查找下标的性质,从而确定如何二分查找 ~ Java
541. 反转字符串 II 双指针 ~ 344, 917 Java
542. 01 矩阵 BFS 本质是最短路径问题 ~ Java
543. 二叉树的直径 DFS ~ 1522 Java
545. 二叉树的边界 树的遍历 ~ Java
547. 省份数量 DFS,并查集 题目本质就是确定图的连通分量的数量 323 Java
549. 二叉树中最长的连续序列 动态规划,DFS 树形的动态规划 298, 337 Java
557. 反转字符串中的单词 III 双指针 ~ 344, 541 Java
560. 和为 K 的子数组 前缀和 ~ 437 Java
561. 数组拆分 I 贪心,排序 贪心在于每次选择的数尽可能接近 ~ Java
567. 字符串的排列 异位词,滑动窗口 利用计数的方法处理异位词 49, 438 Java
572. 另一棵树的子树 树的遍历,哈希 树的序列化 652 Java
581. 最短无序连续子数组 插入排序,双指针 无序数组中的最小值和最大值应该在的位置之间的长度即为答案 ~ Java
582. 杀掉进程 图的遍历 ~ Java
583. 两个字符串的删除操作 动态规划 本质是最长公共子序列,也可以利用编辑距离来做 72, 1143 Java
589. N 叉树的前序遍历 树的前序遍历 掌握利用栈实现的思想 144 Java
590. N 叉树的后序遍历 树的后序遍历 掌握利用栈实现的思想 145 Java
605. 种花问题 贪心 让两朵花之间的距离尽可能小 ~ Java
611. 有效三角形的个数 二分查找 利用双指针可以优化时间复杂度 ~ Java
617. 合并二叉树 递归 ~ 226 Java
621. 任务调度器 模拟 ~ ~ Java
624. 数组列表中的最大距离 贪心 找到最值 ~ Java
630. 课程表 III 贪心 难点在于贪心规则的确定 ~ Java
633. 平方数之和 双指针 注意越界 ~ Java
643. 子数组最大平均数 I 滑动窗口 每一次求和时,利用滑动窗口,更新降低时间复杂度 1252 Java
646. 最长数对链 贪心 抓住问题本质 ~ Java
647. 回文子串 中心扩展法 Manacher 算法不要求掌握 5 Java
652. 寻找重复的子树 二叉树的遍历 要想唯一确定二叉树,就需要序列化 572 Java
667. 优美的排列 II 数学 ~ ~ Java
669. 修剪二叉搜索树 树的遍历 二叉搜索树的性质 ~ Java
672. 灯泡开关 Ⅱ 位运算 本质是穷举 ~ Java
673. 最长递增子序列的个数 动态规划 一下子维护两个dp数组 ~ Java
674. 最长连续递增序列 贪心,双指针 贪心体现在以某一个元素开头的子序列尽可能长 ~ Java
679. 24 点游戏 回溯 这道题可以更好的理解回溯 ~ Java
680. 验证回文字符串 Ⅱ 双指针 ~ 125 Java
684. 冗余连接 并查集 DFS也可以做 685 Java
685. 冗余连接 II 并查集 灵活的运用并查集,体会并查集的作用是连接同一类型的节点 684 Java
687. 最长同值路径 动态规划,DFS 树形的动态规划 250, 298, 549 Java
694. 不同岛屿的数量 DFS 本质是岛屿类问题 200 Java
695. 岛屿的最大面积 回溯 本质是岛屿类问题,经典的DFS问题 130, 200 Java
698. 划分为k个相等的子集 回溯 ~ 473 Java
704. 二分查找 二分查找 必须会写 ~ Java
705. 设计哈希集合 链表,哈希 哈希冲突的处理 ~ Java
707. 设计链表 链表 熟悉链表的性质以及操作 ~ Java
708. 循环有序列表的插入 链表 循环链表的处理 ~ Java
712. 两个字符串的最小ASCII删除和 动态规划 双串问题的动态规划 72 Java
714. 买卖股票的最佳时机含手续费 动态规划 具有两个状态的动态规划 122 Java
718. 最长重复子数组 动态规划,滑动窗口 双串问题可以考虑动态规划 ~ Java
720. 词典中最长的单词 哈希 涉及字符串字典序的比较,也可用字典树实现 208 Java
722. 删除注释 模拟 字符串遍历 ~ Java
738. 单调递增的数字 贪心 在满足要求时让每一位的数字尽可能大 ~ Java
739. 每日温度 单调栈 如果需要找到左边或者右边第一个比当前位置的数大或者小,则可以考虑使用单调栈 84, 85 Java
740. 删除并获得点数 动态规划 问题的转化 198 Java
746. 使用最小花费爬楼梯 动态规划 ~ ~ Java
760. 找出变位映射 哈希表 遍历 ~ Java
763. 划分字母区间 贪心,哈希表 贪心每次所能到达的最远距离 ~ Java
765. 情侣牵手 并查集 确定并查集的连通分量数量比确定并查集内每一个连通分量的大小更容易 547 Java
771. 宝石与石头 哈希表 本质是字符统计 ~ Java
772. 基本计算器 III 逆波兰表达式 224, 227 Java
778. 水位上升的泳池中游泳 并查集,Dijkstra 算法 单源最短路径问题 1102 Java
780. 到达终点 模拟 数学分析优化时间复杂度 ~ Java
784. 字母大小写全排列 回溯 ~ ~ Java
785. 判断二分图 DFS,并查集 ~ 802, 886 Java
788. 旋转数字 模拟 数位 DP的思想 ~ Java
796. 旋转字符串 ~ 本质是查找子串的题 28 Java
801. 使序列递增的最小交换次数 动态规划 状态转移不太好想 ~ Java
802. 找到最终的安全状态 DFS,拓扑排序 标准的深度优先遍历 207, 210, 785 Java
803. 打砖块 并查集 并查集只能合并,不能拆分,此题是并查集的反向应用 ~ Java
804. 唯一摩尔斯密码词 哈希表 Java中直接利用数组实现 hash 比HashMap速度快一点点 1 Java
806. 写字符串需要的行数 模拟 ~ ~ Java
811. 子域名访问计数 模拟 熟悉String类的API ~ Java
813. 最大平均值和的分组 动态规划 理解状态如何转移 410 Java
817. 链表组件 模拟 哈希表 ~ Java
822. 翻转卡片游戏 哈希表 找规律题 ~ Java
823. 带因子的二叉树 动态规划 子节点到根的递推 ~ Java
827. 最大人工岛 并查集 这道题更考查了对并查集的理解 ~ Java
828. 统计子串中的唯一字符 哈希表 有点记忆化搜索的感觉 ~ Java
831. 隐藏个人信息 模拟 字符串 ~ Java
833. 字符串中的查找与替换 模拟 自定义排序规则并排序 ~ Java
834. 树中距离之和 树,图 无向联通树中,每个节点都可以是根节点,邻接表表示法,动态规划 ~ Java
849. 到最近的人的最大距离 贪心 应用规律 ~ Java
852. 山脉数组的峰顶索引 二分查找 二分查找的简单应用 ~ Java
856. 括号的分数 栈类型的题目,不一定要将原元素出入站,模拟栈的实现即可 224 Java
860. 柠檬水找零 贪心 本题贪心的是让5元的纸币数量尽可能多 ~ Java
861. 翻转矩阵后的得分 贪心 就行而言,1的位置尽可能靠左;就列而言,1的数量尽可能多 ~ Java
865. 具有所有最深节点的最小子树 递归 树的前序遍历、后序遍历 ~ Java
873. 最长的斐波那契子序列的长度 动态规划,哈希 ~ 300 Java
874. 模拟行走机器人 模拟 难点在于二维矩阵中点的表示 ~ Java
876. 链表的中间结点 (快慢)双指针 ~ 26, 27, 141, 142, 287 Java
886. 可能的二分法 DFS,并查集 深度优先遍历,但遍历时需要记录其它信息 785 Java
887. 鸡蛋掉落 动态规划 思考方式很奇特的动态规划 ~ Java
904. 水果成篮 滑动窗口 滑动窗口的经典问题 ~ 567
915. 分割数组 模拟 模拟实现 ~ Java
917. 仅仅反转字母 双指针 ~ 344 Java
918. 环形子数组的最大和 动态规划 难在环形数组的处理,将环形数组分为两部分处理 53 Java
921. 使括号有效的最少添加 贪心 贪心体现在对于每一个出现的右括号,前面必须保证有左括号与其匹配 ~ Java
931. 下降路径最小和 动态规划 矩阵型的动态规划 ~ Java
940. 不同的子序列 II 动态规划 时间复杂度优化 ~ Java
947. 移除最多的同行或同列石头 并查集 合并次数即为最终结果 ~ Java
959. 由斜杠划分区域 并查集 难在如何将问题建模 ~ Java
970. 强整数 哈希表 枚举 ~ Java
975. 奇偶跳 动态规划,单调栈 就状态转移而言,这道题不难,难点在于利用单调栈简化表示 84, 85 Java
977. 有序数组的平方 双指针 练习双指针的一道不错的题目 ~ Java
978. 最长湍流子数组 滑动窗口 注意相等的时候左右边界同时移动 ~ Java
979. 在二叉树中分配硬币 回溯 这道题需要对树的回溯、遍历有更深的理解 ~ Java
980. 不同路径 III 回溯 本质是二维矩阵遍历题型 ~ Java
990. 等式方程的可满足性 并查集 本质是确定图的连通分量 547 Java
995. K 连续位的最小翻转次数 差分数组 ~ 155 Java
1003. 检查替换后的词是否有效 模拟 ~ Java
1004. 最大连续1的个数 III 滑动窗口 ~ 487 Java
1008. 前序遍历构造二叉搜索树 递归 构建二叉树的题目 105, 106, 1028 Java
1010. 总持续时间可被 60 整除的歌曲 哈希表 计数 ~ Java
1015. 可被 K 整除的最小整数 哈希表 数学 ~ Java
1016. 子串能表示从 1 到 N 数字的二进制串 字符串处理 KMP算法 ~ Java
1017. 负二进制转换 进制转换 模拟题 ~ Java
1019. 链表中的下一个更大节点 单调栈 单调递增栈 84 Java
1020. 飞地的数量 DFS,BFS,并查集 本质是岛屿类问题,经典的DFS问题 130, 695 Java
1027. 最长等差数列 动态规划 ~ 873 Java
1028. 从先序遍历还原二叉树 根据遍历结果还原二叉树 ~ 105, 106, 297, 1008 Java
1029. 两地调度 贪心 贪心体现在尽可能让去B市费用与去A市费用相差越大的人去A市,剩下的去B市 ~ Java
1033. 移动石子直到连续 贪心 ~ ~ Java
1034. 边界着色 回溯 本质是岛屿类问题 130, 200, 1020 Java
1039. 多边形三角剖分的最低得分 动态规划 记忆化搜索之前出现的状态 ~ Java
1040. 移动石子直到连续 II 模拟 找规律 ~ Java
1041. 困于环中的机器人 模拟 字符串处理 2061 Java
1042. 不邻接植花 图的颜色表示法 ~ Java
1052. 爱生气的书店老板 滑动窗口 ~ 643 Java
1053. 交换一次的先前排列 贪心 多写几个确定贪心原理 ~ Java
1055. 形成字符串的最短路径 贪心,动态规划 贪心模拟简单且快捷 ~ Java
1056. 易混淆数 模拟 哈希表 ~ Java
1059. 从始点到终点的所有路径 反向拓扑排序 802 Java
1060. 有序数组中的缺失元素 二分查找 ~ 1228 Java
1072. 按列翻转得到最大值等行数 哈希表 位运算 ~ Java
1073. 负二进制数相加 模拟 本质仍是二进制运算 ~ Java
1079. 活字印刷 回溯 本质是树结构 ~ Java
1080. 根到叶路径上的不足节点 树的遍历 找到递归关系 ~ Java
1086. 前五科的均分 模拟 1172 Java
1090. 受标签影响的最大值 贪心 根据题意确定排序规则并进行排序 ~ Java
1091. 二进制矩阵中的最短路径 BFS 本质是最短路径问题 ~ Java
1093. 大样本统计 模拟 基本数据类型转换 ~ Java
1102. 得分最高的路径 并查集 并查集的巧妙运用 778 Java
1120. 子树的最大平均值 树的遍历 ~ Java
1133. 最大唯一数 模拟 哈希表,遍历 ~ Java
1135. 最低成本联通所有城市 并查集 并查集的巧妙运用 ~ Java
1136. 平行课程 拓扑排序 运用了关键活动算法中求每一个事件的最早开始时间 207, 210, 802 Java
1138. 字母板上的路径 哈希,矩阵 用矩阵实现哈希 ~ Java
1143. 最长公共子序列 动态规划 经典的双串动态规划 ~ Java
1145. 二叉树着色游戏 二叉树遍历、贪心 遍历 ~ Java
1150. 检查一个数是否在数组中占绝大多数 查找算法 二分查找 ~ Java
1162. 地图分析 BFS 多源最短路径 2204 Java
1172. 餐盘栈 模拟 1086 Java
1197. 进击的骑士 图的无权最短路径 Dijkstra算法 ~ Java
1202. 交换字符串中的元素 并查集 此题可以学习如何利用哈希表保存并查集内不同的连通分量 765 Java
1208. 尽可能使字符串相等 滑动窗口 ~ ~ Java
1210. 穿过迷宫的最少移动次数 BFS BFS用来求解最短路径 ~ Java
1217. 玩筹码 贪心 贪心的思想体现在尽可能多的移动偶数次 ~ Java
1222. 可以攻击国王的皇后 模拟 枚举 ~ Java
1228. 等差数列中缺失的数字 二分查找 ~ 1060 Java
1229. 安排会议日程 双指针 对不同情况进行讨论确定指针如何移动 ~ Java
1230. 抛掷硬币 动态规划 0-1背包问题 416, 494 Java
1234. 替换子串得到平衡字符串 双指针 字符统计、滑动窗口 ~ Java
1236. 网络爬虫 图的遍历 需要将问题抽象化 ~ Java
1237. 找出给定方程的正整数解 双指针 ~ 15 Java
1247. 交换字符使得字符串相同 贪心 此题需要确定3类基本的字符串形式,贪心在于尽量让一次交换使得两个位置由不同变为相同 ~ Java
1250. 检查「好数组」 辗转相除法 最大公约数 ~ Java
1254. 统计封闭岛屿的数目 回溯 岛屿问题的进阶,需要一些判断条件 200, 1020 Java
1265. 逆序打印不可变链表 链表 栈,递归 ~ Java
1267. 统计参与通信的服务器 模拟 哈希表,矩阵遍历 ~ Java
1281. 整数的各位积和之差 模拟 确定数位值 ~ Java
1289. 下降路径最小和 II 动态规划 学习如何优化空间 ~ Java
1306. 跳跃游戏 III BFS 一道简单的广度优先搜索题 ~ Java
1319. 连通网络的操作次数 并查集 实质还是确定连通分量的数量 547 Java
1332. 删除回文子序列 双指针 ~ 125 Java
1333. 餐厅过滤器 模拟 排序 ~ Java
1372. 二叉树中的最长交错路径 动态规划,DFS 树形的动态规划 ~ Java
1373. 二叉搜索子树的最大键值和 树的遍历 后根遍历传递子树状态到当前节点 ~ Java
1376. 通知所有员工所需的时间 树的遍历与表示 ~ Java
1388. 3n 块披萨 动态规划 ~ 213 Java
1400. 构造 K 个回文字符串 贪心 此题贪心在于让奇数个字符分配到不同的回文串中 ~ Java
1419. 数青蛙 模拟 字符串计数 ~ Java
1423. 可获得的最大点数 滑动窗口 反向思考问题更简单 ~ Java
1426. 数元素 哈希表 数组遍历 ~ Java
1427. 字符串的左右移 模拟 字符串处理 ~ Java
1429. 第一个唯一数字 模拟 队列,LinkedHashSet ~ Java
1444. 切披萨的方案数 动态规划 矩阵型的动态规划用左上角的点坐标表示矩阵 ~ Java
1441. 用栈操作构建数组 模拟 ~ Java
1448. 统计二叉树中好节点的数目 树的遍历 DFS ~ Java
1456. 定长子串中元音的最大数目 滑动窗口 ~ 1052 Java
1462. 课程表 IV 拓扑排序,额外处理结点关系 ~ Java
1473. 粉刷房子 III 动态规划 多状态动态规划 ~ Java
1474. 删除链表 M 个节点之后的 N 个节点 链表遍历 ~ ~ Java
1475. 商品折扣后的最终价格 单调栈 需要找到第一个比当前位置小的值 739 Java
1478. 安排邮筒 动态规划 多维状态,同时需要进行数学分析 ~ Java
1487. 保证文件名唯一 哈希表 哈希计数 ~ Java
1490. 克隆 N 叉树 树的遍历 DFS,BFS ~ Java
1493. 删掉一个元素以后全为 1 的最长子数组 滑动窗口 ~ 487 Java
1506. 找到 N 叉树的根节点 树的遍历 图的入度,遍历 ~ Java
1522. N 叉树的直径 树的遍历 确定树的高度 543 Java
1523. 在区间范围内统计奇数数目 数学,前缀和 前缀和的方法本质也是数学 ~ Java
1572. 矩阵对角线元素的和 模拟 矩阵数组 ~ Java
1582. 二进制矩阵中的特殊位置 模拟 ~ ~ Java
1590. 使数组和能被 P 整除 哈希表,前缀和 思想是两数之和的哈希思想 ~ Java
1592. 重新排列单词间的空格 模拟 数学模拟,注意特殊情况 ~ Java
1593. 拆分字符串使唯一子字符串的数目最大 回溯 ~ ~ Java
1598. 文件夹操作日志搜集器 模拟 利用栈解决问题 ~ Java
1599. 经营摩天轮的最大利润 模拟 纯数组模拟 ~ Java
1601. 最多可达成的换楼请求数目 回溯 本质是二进制枚举 ~ Java
1603. 设计停车系统 模拟 很简单的一道题 ~ Java
1604. 警告一小时内使用相同员工卡大于等于三次的人 字符串处理,Java集合 模拟 ~ Java
1605. 给定行和列的和求可行矩阵 贪心 贪心体现在生成矩阵某一个位置的值的时候,让这个值尽可能大 ~ Java
1608. 特殊数组的特征值 二分查找 二分查找的巧用 ~ Java
1619. 删除某些元素后的数组均值 模拟,排序 排序加快解题 ~ Java
1624. 两个相同字符之间的最长子字符串 哈希表 模拟,遍历统计 ~ Java
1631. 最小体力消耗路径 并查集 连通性问题就可以考虑使用并查集 1102 Java
1640. 能否连接形成数组 哈希表 找到题目中数字顺序的关键点 ~ Java
1652. 拆炸弹 滑动窗口 利用滑动窗口避免重复计算 ~ Java
1654. 到家的最少跳跃次数 BFS 无限图需要确定图的边界(上下限) ~ Java
1658. 将 x 减到 0 的最小操作数 滑动窗口 同时处理前缀和及后缀和会降低时间复杂度 ~ Java
1663. 具有给定数值的最小字符串 贪心 贪心模拟 ~ Java
1664. 生成平衡数组的方案数 前缀和,动态规划 动态规划 ~ Java
1669. 合并两个链表 链表遍历 模拟 ~ Java
1694. 重新格式化电话号码 模拟 字符串模拟 ~ Java
1695. 删除子数组的最大得分 滑动窗口 配合哈希表处理右滑边界 ~ Java
1700. 无法吃午餐的学生数量 模拟 栈、队列 ~ Java
1710. 卡车上的最大单元数 贪心,排序 贪心体现在优先选择大箱子 ~ Java
1749. 任意子数组和的绝对值的最大值 动态规划 分两种情况进行处理 53 Java
1753. 移除石子的最大得分 贪心 优先队列模拟 2335 Java
1768. 交替合并字符串 模拟 双指针 ~ Java
1784. 检查二进制字符串字段 模拟 理清思路,表示出所有的状态即可 ~ Java
1790. 仅执行一次字符串交换能否使两个字符串相等 哈希 字符统计 ~ Java
1796. 字符串中第二大的数字 哈希 哈希表 ~ Java
1797. 设计一个验证系统 哈希表,LRU LRU的应用 ~ Java
1798. 你能构造出连续值的最大数目 贪心 本题难点在于递推关系的确定 ~ Java
1800. 最大升序子数组和 动态规划 经典的动态规划题 53 Java
1801. 积压订单中的订单总数 模拟 优先队列模拟 ~ Java
1805. 字符串中不同整数的数目 模拟 双指针 ~ Java
1807. 替换字符串中的括号内容 哈希表 模拟 ~ Java
1814. 统计一个数组中好对子的数目 哈希表 利用哈希表降低时间复杂度 1 Java
1817. 查找用户活跃分钟数 哈希表 模拟 ~ Java
1828. 统计一个圆中点的数目 数组遍历 模拟 ~ Java
1905. 统计子岛屿 并查集 ~ ~ Java
1911. 最大子序列交替和 动态规划 ~ 122 Java
1921. 消灭怪物的最大数量 贪心 排序 ~ Java
1971. 寻找图中是否存在路径 图的表示,图的遍历 ~ Java
1984. 学生分数的最小差值 滑动窗口 本题将题目转化后就会好做很多 ~ Java
1993. 树上的操作 树的表示,树的遍历 ~ Java
2042. 检查句子中的数字是否递增 模拟 ~ 1805 Java
2044. 统计按位或能得到最大值的子集数目 回溯 二进制枚举,这道题只需要求结果,不需要保留所有可能的排列 ~ Java
2061. 扫地机器人清扫过的空间个数 模拟,DFS 本题难点在于确定遍历终止 54, 489 Java
2050. 并行课程 III 拓扑排序 ~ Java
2177. 找到和为给定整数的三个连续整数 模拟 数学 ~ Java
2178. 拆分成最多数目的正偶数之和 贪心 贪心在于每次选择的偶数尽可能小 ~ Java
2180. 统计各位数字之和为偶数的整数个数 模拟 数学推算找规律更快 ~ Java
2185. 统计包含给定前缀的字符串 模拟 字符串模拟 ~ Java
2204. 到无向图中环的距离 拓扑排序,多源最短路径 图论题目的综合应用 ~ Java
2208. 将数组和减半的最少操作次数 贪心 配合优先队列 ~ Java
2235. 两整数相加 模拟 数学 ~ Java
2236. 判断根结点是否等于子结点之和 模拟 二叉树的基础概念 ~ Java
2240. 买钢笔和铅笔的方案数 枚举 数学 ~ Java
2283. 判断一个数的数字计数是否等于数位的值 数学模拟 ~ ~ Java
2287. 重排字符形成目标字符串 哈希表 模拟,字符串计数 ~ Java
2293. 极大极小游戏 递归 理解题意,模拟 ~ Java
2299. 强密码检验器 II 哈希表 模拟 ~ Java
2303. 计算应缴税款总额 模拟 分类讨论 ~ Java
2309. 兼具大小写的最好英文字母 哈希 字符串统计 ~ Java
2315. 统计星号 模拟 ~ ~ Java
2319. 判断矩阵是否是一个 X 矩阵 数组 模拟 ~ Java
2325. 解密消息 字符串 模拟 ~ Java
2331. 计算布尔二叉树的值 树的遍历 后根遍历的思想 ~ Java
2335. 装满杯子需要的最短总时长 贪心 贪心模拟,优先队列 1753 Java
2337. 移动片段得到字符串 字符串 基于双指针确定规则 777 Java
2341. 数组能形成多少数对 哈希表 字符统计 ~ Java
2347. 最好的扑克手牌 哈希表 字符统计 ~ Java
2351. 第一个出现两次的字母 哈希表,位运算 只有两种状态的时候就可以考虑位运算 ~ Java
2357. 使数组中所有元素都等于零 哈希表,优先队列 哈希计数,模拟 ~ Java
2363. 合并相似的物品 哈希表 哈希表,排序 ~ Java
2373. 矩阵中的局部最大值 模拟 有点最大池化层的感觉,高维情况下可以用单调队列实现 ~ Java
2379. 得到 K 个黑块的最少涂色次数 滑动窗口 双指针模拟定长滑动窗口 ~ Java
2383. 赢得比赛需要的最少训练时长 模拟,贪心 注意特殊情况 ~ Java
2384. 最大回文数字 贪心 注意特殊情况的判断 ~ Java
2399. 检查相同字母间的距离 哈希表 字符串处理 ~ Java
2404. 出现最频繁的偶数元素 模拟 数学 ~ Java
2423. 删除字符使频率相同 哈希表 分类讨论易出错 ~ Java
2432. 处理用时最长的那个任务的员工 模拟 数组处理 ~ Java
2441. 与对应负数同时存在的最大正整数 哈希表 数组哈希遍历 ~ Java
2446. 判断两个事件是否存在冲突 排序 字符串比较 ~ Java
2475. 数组中不等三元组的数目 模拟 哈希表 ~ Java
2500. 删除每行中的最大值 模拟 排序 ~ Java
2511. 最多可以摧毁的敌人城堡数目 模拟 遍历 ~ Java
2517. 礼盒的最大甜蜜度 二分查找 捋清二分查找的终止条件 ~ Java
2544. 交替数字和 模拟 符号变量的使用 ~ Java
2559. 统计范围内的元音字符串数 字符串 哈希表,前缀和 ~ Java
2560. 打家劫舍 IV 二分查找 有序数组问题就可以尝试二分查找 ~ Java
2582. 递枕头 数学 模拟 ~ Java
2591. 将钱分给最多的儿童 贪心 每次让尽可能多的人分到8元钱 ~ Java
2596. 检查骑士巡视方案 图的遍历 DFS ~ Java
2603. 收集树中金币 图的应用 拓扑排序 ~ Java
2605. 从两个数字数组里生成最小数字 模拟 哈希表 ~ Java
2651. 计算列车到站时间 模拟 数学 ~ Java
2679. 矩阵中的和 模拟 堆排序、优先队列 ~ Java
2681. 英雄的力量 动态规划 学习用动态规划来表示子集 ~ Java
2682. 找出转圈游戏输家 模拟 数组处理 ~ Java
2842. 统计一个字符串的 k 子序列美丽值最大的数目 DFS 穷举所有可能出现的结果 ~ Java
2849. 判断能否在给定时间到达单元格 模拟 数学 ~ Java
2856. 删除数对后的最小数组长度 贪心 堆,优先队列 ~ Java

剑指 Offer(第 2 版)题库及其考察的知识点(持续更新):

题目名称 考察知识点 说明 关联题型 答案
剑指 Offer 09. 用两个栈实现队列 队列,栈 面试高频题 ~ Java
剑指 Offer 13. 机器人的运动范围 回溯 迷宫类问题,需要根据题意在遍历时判断 ~ Java
剑指 Offer 30. 包含min函数的栈 栈的应用 ~ 155 Java
剑指 Offer 10- I. 斐波那契数列 递归,迭代 递归和迭代正好是相反的过程 ~ Java
剑指 Offer 47. 礼物的最大价值 动态规划 思考相邻点的推算关系 ~ Java

程序员面试金典(第 6 版)题库及其考察的知识点(持续更新):

题目名称 考察知识点 说明 关联题型 答案
面试题 01.02. 判定是否互为字符重排 哈希表 判断字符数量是否相等的思想 ~ Java
面试题 05.02. 二进制数转字符串 位运算 进制转换 ~ Java
面试题 16.25. LRU 缓存 链表 手动实现双向链表 ~ Java
面试题 17.24. 最大子矩阵 动态规划 最大连续子序和 ~ Java

119 经典题变种挑战(持续更新):

题目名称 考察知识点 说明 关联题型 答案
LCP 50. 宝石补给 模拟 数组遍历 ~ Java

经典题挑战(持续更新):

题目名称 考察知识点 说明 关联题型 答案
LCP 06. 拿硬币 模拟 数组遍历 ~ Java

About

A brief introduction to leetcode problems.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages