力扣 Hot 100 算法解题思路总结
一、普通数组
| 题目 | 解题思路 |
|---|---|
| 最大子数组和 | 用前缀和与最小前缀和的差表示最大子数组和,遍历更新前缀和并维护最小前缀和。 |
| 合并区间 | 先按起点排序,再逐个合并有重叠的区间,用当前区间扩展上一个区间的右端点。 |
| 旋转数组 | 先整体反转数组,再分别反转前 k 个和后 n−k 个元素,实现右旋。 |
| 除自身以外数组的乘积 | 用前缀积和后缀积分别记录当前位置左、右两边的乘积,再相乘得到结果。 |
| 缺失的第一个正数 | 把每个正数放到对应索引位置(值 i 放在 i−1 处),最后第一个不匹配的位置就是缺失的最小正数。 |
二、矩阵
| 题目 | 解题思路 |
|---|---|
| 矩阵置零 | 两遍扫描:先记录哪些行和列含 0,再遍历矩阵把对应行列全置为 0。 |
| 螺旋矩阵 | 按照右、下、左、上的顺序循环移动指针,访问矩阵元素并标记已访问,遇边界或已访问则转向。 |
| 旋转图像 | 先转置矩阵,再反转每一行,实现顺时针旋转九十度。 |
| 搜索二维矩阵 II | 从右上角开始查找,比目标大就左移,比目标小就下移,直到找到或越界为止。 |
三、哈希
| 题目 | 解题思路 |
|---|---|
| 两数之和 | 用哈希表记录'已遍历数字对应的下标',在遍历时查找'目标值减当前数'是否已出现。 |
| 字母异位词分组 | 按排序后的字符串作为哈希表键,把所有'字符组成相同'的单词分到同一组。 |
| 最长连续序列 | 用哈希集合存所有数,只从'序列起点'(前一个数不存在)开始向右数连续长度,记录最长。 |
四、双指针
| 题目 | 解题思路 |
|---|---|
| 移动零 | 用双指针,j 指向下一个非零放的位置,遍历时把非零元素往前交换。 |
| 盛最多水的容器 | 双指针从两端向中间逼近,每次计算面积并移动较短边以期获得更大面积。 |
| 三数之和 | 先排序,再固定一个数,用双指针左右夹逼找其余两数,使三数和为 0,并跳过重复。 |
| 接雨水 | 用双指针从两端向内扫,维护左右最大高度,哪边低就用哪边计算可接水量。 |
五、滑动窗口
| 题目 | 解题思路 |
|---|---|
| 无重复字符的最长子串 | 用滑动窗口和哈希表记录字符频次,出现重复就收缩左边界,维护窗口内无重复并更新最大长度。 |
| 找到字符串中所有字母异位词 | 用滑动窗口 + Counter 统计字符频次,每次窗口长度等于 p 时比较计数是否相同。 |

