LeetCode Hot100

LeetCode HOT 100

参考你给的页面,先搭一个可直接填充内容的页面框架。现在菜单 Hot100 会跳到这个页面,不再走不存在的 /categories/hot100/

刷题总览

  • 开始时间:2026-03-13
  • 结束时间:待定
  • 刷题语言:C++
  • 当前进度:0 / 100
  • 使用方式:每做完一题,把“状态 / 题解链接 / 备注”补上即可

推荐记录模板

你可以在每道题对应的文章里统一使用下面这个模板:

1
2
3
4
5
6
7
8
### 题目名称
- 题目链接:
- 难度:
- 关键思路:
- 时间复杂度:
- 空间复杂度:
- 易错点:
- 复盘:

一、哈希

编号 题目 状态 题解链接 备注
1 两数之和 进行中 查看题解 哈希表入门
2 字母异位词分组 待做
3 最长连续序列 待做

1. 两数之和

题面

给定一个整数数组和目标值,返回和等于目标值的两个下标。

示例

示例 1

1
2
输入:nums = [2,7,11,15], target = 9
输出:[0,1]

示例 2

1
2
输入:nums = [3,2,4], target = 6
输出:[1,2]

思路

参考页的写法一般是:先放题面,再放示例,接着写“解法”。

这里最适合先写 解法 1:哈希表

核心想法:

  1. 遍历数组中的每个数 nums[i]
  2. 先计算还需要的值 target - nums[i]
  3. 如果这个值之前出现过,直接返回两个下标。
  4. 如果没有出现过,就把当前值和下标存进哈希表。

解法 1:哈希表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> mp;

for (int i = 0; i < nums.size(); ++i) {
int need = target - nums[i];
if (mp.count(need)) {
return {mp[need], i};
}
mp[nums[i]] = i;
}

return {};
}
};

复杂度分析

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(n)$

易错点

  • 不能先把当前元素放进哈希表,再查自己需要的值,否则可能错误使用同一个元素。
  • 返回的是下标,不是元素值。
  • 如果题目保证有唯一解,直接返回即可;否则要额外处理无解情况。

复盘

  • 这是 Hot100 里非常典型的哈希表入门题。
  • 关键不是“枚举两个数”,而是“把寻找另一个数的过程优化成一次查询”。
  • 后面像“字母异位词分组”“最长连续序列”也都会继续用到哈希思想。

可直接复用的写法模板

后面每题都可以按这个格式写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## 题号. 题目名

- 题目链接:
- 难度:
- 标签:
- 状态:

### 题面

一句话概括题意。

### 示例

```text
输入:
输出:

思路

先写核心想法,再写为什么这样做。

解法 1

1
2
3
4
5
6
7
8
9
10
```

### 复杂度分析

- 时间复杂度:
- 空间复杂度:

### 易错点

### 复盘

二、双指针

编号 题目 状态 题解链接 备注
4 移动零 待做
5 盛最多水的容器 待做
6 三数之和 待做
7 接雨水 待做

三、滑动窗口

编号 题目 状态 题解链接 备注
8 无重复字符的最长子串 待做
9 找到字符串中所有字母异位词 待做

四、子串

编号 题目 状态 题解链接 备注
10 和为 K 的子数组 待做
11 滑动窗口最大值 待做
12 最小覆盖子串 待做

五、普通数组

编号 题目 状态 题解链接 备注
13 最大子数组和 待做
14 合并区间 待做
15 轮转数组 待做
16 除自身以外数组的乘积 待做
17 缺失的第一个正数 待做
18 矩阵置零 待做
19 螺旋矩阵 待做
20 旋转图像 待做
21 搜索二维矩阵 II 待做

六、链表

编号 题目 状态 题解链接 备注
22 相交链表 待做
23 反转链表 待做
24 回文链表 待做
25 环形链表 待做
26 环形链表 II 待做
27 合并两个有序链表 待做
28 两数相加 待做
29 删除链表的倒数第 N 个结点 待做
30 两两交换链表中的节点 待做
31 K 个一组翻转链表 待做
32 随机链表的复制 待做
33 排序链表 待做
34 合并 K 个升序链表 待做
35 LRU 缓存 待做

七、二叉树

编号 题目 状态 题解链接 备注
36 二叉树的中序遍历 待做
37 二叉树的最大深度 待做
38 翻转二叉树 待做
39 对称二叉树 待做
40 二叉树的直径 待做
41 二叉树的层序遍历 待做
42 将有序数组转换为二叉搜索树 待做
43 验证二叉搜索树 待做
44 二叉搜索树中第 K 小的元素 待做
45 二叉树的右视图 待做
46 二叉树展开为链表 待做
47 从前序与中序遍历序列构造二叉树 待做
48 路径总和 III 待做
49 二叉树的最近公共祖先 待做
50 二叉树中的最大路径和 待做

八、图论

编号 题目 状态 题解链接 备注
51 岛屿数量 待做
52 腐烂的橘子 待做
53 课程表 待做
54 实现 Trie(前缀树) 待做

九、回溯

编号 题目 状态 题解链接 备注
55 全排列 待做
56 子集 待做
57 电话号码的字母组合 待做
58 组合总和 待做
59 括号生成 待做
60 单词搜索 待做
61 分割回文串 待做
62 N 皇后 待做

十、二分查找

编号 题目 状态 题解链接 备注
63 搜索插入位置 待做
64 搜索二维矩阵 待做
65 在排序数组中查找元素的第一个和最后一个位置 待做
66 搜索旋转排序数组 待做
67 寻找旋转排序数组中的最小值 待做
68 寻找两个正序数组的中位数 待做

十一、栈

编号 题目 状态 题解链接 备注
69 有效的括号 待做
70 最小栈 待做
71 字符串解码 待做
72 每日温度 待做
73 柱状图中最大的矩形 待做

十二、堆

编号 题目 状态 题解链接 备注
74 数组中的第 K 个最大元素 待做
75 前 K 个高频元素 待做
76 数据流的中位数 待做

十三、贪心算法

编号 题目 状态 题解链接 备注
77 买卖股票的最佳时机 待做
78 跳跃游戏 待做
79 跳跃游戏 II 待做
80 划分字母区间 待做

十四、动态规划

编号 题目 状态 题解链接 备注
81 爬楼梯 待做
82 杨辉三角 待做
83 打家劫舍 待做
84 完全平方数 待做
85 零钱兑换 待做
86 单词拆分 待做
87 最长递增子序列 待做
88 乘积最大子数组 待做
89 分割等和子集 待做
90 最长有效括号 待做

十五、多维动态规划

编号 题目 状态 题解链接 备注
91 不同路径 待做
92 最小路径和 待做
93 最长回文子串 待做
94 最长公共子序列 待做
95 编辑距离 待做

十六、技巧

编号 题目 状态 题解链接 备注
96 只出现一次的数字 待做
97 多数元素 待做
98 颜色分类 待做
99 下一个排列 待做
100 寻找重复数 待做

后续建议

  1. 每做完一题,新建一篇文章,分类统一放到 AlgorithmHot100
  2. 把题解文章链接回填到本页“题解链接”列。
  3. 如果你希望页面更像参考站,我可以继续帮你补:
    • 进度打卡区
    • 每题折叠面板
    • 按语言切换代码块
    • 自动统计已完成数量