LeetCode Hot 100
LeetCode Hot 100 · Java 题解
按你给的《面试百题》分类风格整理,并补全为 Hot 100 的 100 题 Java 版本。
默认都选主流面试里最稳、时间复杂度最优或综合最优的写法。
参考你的原始分类结构与题目风格:
哈希
1. 两数之和
1 | class Solution { |
2. 字母异位词分组
1 | class Solution { |
3. 最长连续序列
1 | class Solution { |
双指针
4. 移动零
1 | class Solution { |
5. 盛最多水的容器
1 | class Solution { |
6. 三数之和
1 | class Solution { |
7. 接雨水
1 | class Solution { |
滑动窗口 / 子串
8. 无重复字符的最长子串
1 | class Solution { |
9. 找到字符串中所有字母异位词
1 | class Solution { |
10. 和为 K 的子数组
1 | class Solution { |
11. 滑动窗口最大值
1 | class Solution { |
12. 最小覆盖子串
1 | class Solution { |
普通数组
13. 最大子数组和
1 | class Solution { |
14. 合并区间
1 | class Solution { |
15. 轮转数组
1 | class Solution { |
16. 除自身以外数组的乘积
1 | class Solution { |
17. 缺失的第一个正数
1 | class Solution { |
矩阵
18. 矩阵置零
1 | class Solution { |
19. 螺旋矩阵
1 | class Solution { |
20. 旋转图像
1 | class Solution { |
21. 搜索二维矩阵 II
1 | class Solution { |
链表
22. 相交链表
1 | public class Solution { |
23. 反转链表
1 | class Solution { |
24. 回文链表
1 | class Solution { |
25. 环形链表
1 | public class Solution { |
26. 合并两个有序链表
1 | class Solution { |
27. 两数相加
1 | class Solution { |
28. 删除链表的倒数第 N 个结点
1 | class Solution { |
29. 两两交换链表中的节点
1 | class Solution { |
30. K 个一组翻转链表
1 | class Solution { |
31. 随机链表的复制
1 | class Solution { |
32. 排序链表
1 | class Solution { |
二叉树
33. 二叉树的中序遍历
1 | class Solution { |
34. 二叉树的最大深度
1 | class Solution { |
35. 翻转二叉树
1 | class Solution { |
36. 对称二叉树
1 | class Solution { |
37. 二叉树的直径
1 | class Solution { |
38. 二叉树的层序遍历
1 | class Solution { |
39. 将有序数组转换为二叉搜索树
1 | class Solution { |
40. 验证二叉搜索树
1 | class Solution { |
41. 二叉搜索树中第 K 小的元素
1 | class Solution { |
42. 二叉树的右视图
1 | class Solution { |
43. 二叉树展开为链表
1 | class Solution { |
44. 从前序与中序遍历序列构造二叉树
1 | class Solution { |
45. 路径总和 III
1 | class Solution { |
46. 二叉树的最近公共祖先
1 | class Solution { |
图论
47. 岛屿数量
1 | class Solution { |
48. 腐烂的橘子
1 | class Solution { |
49. 课程表
1 | class Solution { |
50. 实现 Trie
1 | class Trie { |
51. 单词拆分
1 | class Solution { |
52. 除法求值
1 | class Solution { |
53. 岛屿的最大面积
1 | class Solution { |
54. 省份数量
1 | class Solution { |
回溯
55. 全排列
1 | class Solution { |
56. 子集
1 | class Solution { |
57. 电话号码的字母组合
1 | class Solution { |
58. 组合总和
1 | class Solution { |
59. 括号生成
1 | class Solution { |
60. 单词搜索
1 | class Solution { |
61. 分割回文串
1 | class Solution { |
62. N 皇后
1 | class Solution { |
二分查找
63. 搜索插入位置
1 | class Solution { |
64. 搜索二维矩阵
1 | class Solution { |
65. 在排序数组中查找元素的第一个和最后一个位置
1 | class Solution { |
66. 搜索旋转排序数组
1 | class Solution { |
67. 寻找旋转排序数组中的最小值
1 | class Solution { |
68. 寻找两个正序数组的中位数
1 | class Solution { |
69. 寻找峰值
1 | class Solution { |
栈
70. 有效的括号
1 | class Solution { |
71. 最小栈
1 | class MinStack { |
72. 字符串解码
1 | class Solution { |
73. 每日温度
1 | class Solution { |
74. 柱状图中最大的矩形
1 | class Solution { |
堆 / 优先队列
75. 数组中的第 K 个最大元素
1 | class Solution { |
76. 前 K 个高频元素
1 | class Solution { |
77. 数据流的中位数
1 | class MedianFinder { |
贪心
78. 买卖股票的最佳时机
1 | class Solution { |
79. 跳跃游戏
1 | class Solution { |
80. 跳跃游戏 II
1 | class Solution { |
81. 划分字母区间
1 | class Solution { |
82. 杨辉三角
1 | class Solution { |
技巧 / 位运算 / 数组结论题
83. 只出现一次的数字
1 | class Solution { |
84. 多数元素
1 | class Solution { |
85. 颜色分类
1 | class Solution { |
86. 下一个排列
1 | class Solution { |
87. 寻找重复数
1 | class Solution { |
动态规划
88. 爬楼梯
1 | class Solution { |
89. 打家劫舍
1 | class Solution { |
90. 完全平方数
1 | class Solution { |
91. 零钱兑换
1 | class Solution { |
92. 最长递增子序列
1 | class Solution { |
93. 乘积最大子数组
1 | class Solution { |
94. 分割等和子集
1 | class Solution { |
95. 最长有效括号
1 | class Solution { |
96. 不同路径
1 | class Solution { |
97. 最小路径和
1 | class Solution { |
98. 最长回文子串
1 | class Solution { |
99. 最长公共子序列
1 | class Solution { |
100. 编辑距离
1 | class Solution { |
使用建议
- 这份更适合你拿去二刷、三刷,先按分类建立题感。
- 每题自己再补一行:时间复杂度 / 空间复杂度。
- 真正面试前,重点盯这几类:链表、二叉树、回溯、DP、图、二分。
- 如果你后面要,我可以继续给你做:
- 带复杂度版
- 带思路注释版
- 适合 Obsidian 直接导入版
- 按“一周刷题计划”拆分版