刷题清单¶
二刷题目¶
高:56、53、134、560
中:746、
数组/矩阵¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 88 | 合并两个有序数组 | Easy | ||
| 283 | 移动零 | Easy | ||
| 26 | 删除有序数组中的重复项 | Easy | ||
| 27 | 移除元素 | Easy | ||
| 66 | 加一 | Easy | ||
| 169 | 多数元素 | Easy | ||
| 136 | 只出现一次的数字 | Easy | ||
| 217 | 存在重复元素 | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 48 | 旋转图像 | Medium | ||
| 189 | 轮转数组 | Medium | ||
| 238 | 除自身以外数组的乘积 | Medium | ||
| 31 | 下一个排列 | Medium | ||
| 54 | 螺旋矩阵 | Medium | ||
| 56 | 合并区间 | Medium | ||
| 73 | 矩阵置零 | Medium |
字符串¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 344 | 反转字符串 | Easy | ||
| 125 | 验证回文串 | Easy | ||
| 14 | 最长公共前缀 | Easy | ||
| 242 | 有效的字母异位词 | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 3 | 无重复字符的最长子串 | Medium | ||
| 151 | 反转字符串中的单词 | Medium | ||
| 165 | 比较版本号 | Medium | ||
| 43 | 字符串相乘 | Medium |
哈希表¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 1 | 两数之和 | Easy | 哈希表秒了 | |
| 242 | 有效的字母异位词 | Easy | ||
| 349 | 两个数组的交集 | Easy | ||
| 217 | 存在重复元素 | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 49 | 字母异位词分组 | Medium | ||
| 128 | 最长连续序列 | Medium | 先把输入放入哈希表,然后遍历哈希表取值的前一位和后一位判断是否连续 |
双指针/滑动窗口¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 283 | 移动零 | Easy | ||
| 125 | 验证回文串 | Easy | ||
| 167 | 两数之和 II | Medium | ||
| 344 | 反转字符串 | Easy | ||
| 88 | 合并两个有序数组 | Easy | 双指针倒序填充 |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 3 | 无重复字符的最长子串 | Medium | ||
| 15 | 三数之和 | Medium | ||
| 11 | 盛最多水的容器 | Medium | 对撞指针计算面积,每次移动较矮的一边 | |
| 42 | 接雨水 | Hard | 有动态规划、单调栈、双指针三种解法。 | |
| 76 | 最小覆盖子串 | Hard | ||
| 5 | 最长回文子串 | Medium | ||
| 209 | 长度最小的子数组 | Medium |
栈/队列¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 20 | 有效的括号 | Easy | ||
| 232 | 用栈实现队列 | Easy | ||
| 155 | 最小栈 | Medium | ||
| 496 | 下一个更大元素 I | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 739 | 每日温度 | Medium | ||
| 32 | 最长有效括号 | Hard | ||
| 84 | 柱状图中最大的矩形 | Hard |
链表¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 206 | 反转链表 | Easy | 迭代法画图出代码 | |
| 21 | 合并两个有序链表 | Easy | 把两个链表中较小的节点挂在新链表中,并注意处理剩余链表 | |
| 141 | 环形链表 | Easy | 快慢指针秒了 | |
| 160 | 相交链表 | Easy | 哈希表和双指针解法 | |
| 876 | 链表的中间结点 | Easy | 快慢指针秒了 | |
| 92 | 反转链表 II(局部反转) | Medium | 头插法画图出代码 | |
| 142 | 环形链表 II(找环入口) | Medium | 哈希表秒了 | |
| 19 | 删除链表的倒数第 N 个结点 | Medium | ||
| 234 | 回文链表 | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 146 | LRU 缓存 | Medium | 哈希表(\(O(1)\) 找到链表节点)+双向链表(\(O(1)\) 删除节点) | 带TTL |
| 25 | K 个一组翻转链表 | Hard | 分组+头插反转+下一组准备,画图梳理思路 | |
| 23 | 合并 K 个升序链表 | Hard | 归并(基于合并两个链表)和小顶堆两种解法 | |
| 148 | 排序链表 | Medium | 归并+#876+#21 | 用快排实现 |
| 143 | 重排链表 | Medium | 找到链表的中点,并把后半部分反转交叉合并重排 | |
| 138 | 随机链表的复制 | Medium |
二分查找¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 704 | 二分查找 | Easy | ||
| 35 | 搜索插入位置 | Easy | #704 解法上最后返回left即可 | |
| 69 | x 的平方根 | Easy | ||
| 278 | 第一个错误的版本 | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 33 | 搜索旋转排序数组 | Medium | ||
| 153 | 寻找旋转排序数组中的最小值 | Medium | 二分查找有序数组最小值 | |
| 34 | 在排序数组中查找元素的第一个和最后一个位置 | Medium | ||
| 4 | 寻找两个正序数组的中位数 | Hard |
堆¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 215 | 数组中的第K个最大元素 | Medium | ||
| 347 | 前 K 个高频元素 | Medium |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 295 | 数据流的中位数 | Hard | ||
| 23 | 合并 K 个升序链表 | Hard | 小顶堆解法 |
二叉树¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 102 | 二叉树的层序遍历 | Medium | 队列queue中存放着每层节点,遍历过程中用临时变量level收集,最后汇总到ans |
|
| 94 | 二叉树的中序遍历 | Easy | 栈 + 一路向左,最后处理右节点 | |
| 104 | 二叉树的最大深度 | Easy | 后序 + 与翻转二叉树类似,递归返回左右节点中的最大深度+1 | |
| 226 | 翻转二叉树 | Easy | 递归交换左右节点 | |
| 101 | 对称二叉树 | Easy | 前序 + 递归检查对称性 | |
| 144 | 二叉树的前序遍历 | Easy | 栈后进先出的特性需要先压右再压左 | |
| 145 | 二叉树的后序遍历 | Easy | 与中序很像,同样是栈+一路向左,但需要记录前驱节点 | |
| 103 | 二叉树的锯齿形层序遍历 | Medium | 层序 + leftToRight方向开关 |
|
| 199 | 二叉树的右视图 | Medium | 层序 + 每层最后一个节点 | |
| 111 | 二叉树的最小深度 | Easy | 层序 + 找到第一个叶节点(node.Left == nil && node.Right == nil)返回深度即可,注意非空节点的最小深度为1 |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 236 | 二叉树的最近公共祖先 | Medium | 后序 + 递归,注意兼容 p、q 为当前节点、分布在同一侧、分布在两侧、找到与未找到等情况 | |
| 105 | 从前序与中序遍历序列构造二叉树 | Medium | ||
| 98 | 验证二叉搜索树 | Medium | 中序 + 闭包 | |
| 124 | 二叉树中的最大路径和 | Hard | 后序 | |
| 543 | 二叉树的直径 | Easy | 后序 | |
| 662 | 二叉树最大宽度 | Medium | 层序 | |
| 110 | 平衡二叉树 | Easy | 后序递归遍历检查左右子树的高度差是否>1(用-1来代表不平衡) | |
| 114 | 二叉树展开为链表 | Medium | ||
| 112 | 路径总和 | Easy |
回溯¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 46 | 全排列 | Medium | ||
| 78 | 子集 | Medium | ||
| 77 | 组合 | Medium |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 39 | 组合总和 | Medium | ||
| 22 | 括号生成 | Medium | ||
| 79 | 单词搜索 | Medium | ||
| 17 | 电话号码的字母组合 | Medium | ||
| 51 | N 皇后 | Hard | ||
| 47 | 全排列 II | Medium |
贪心¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 121 | 买卖股票的最佳时机(一次交易) | Easy | 把最低价初始值设置为极大值,遍历过程中通过 min() 找最低价,max() 找最大利润 | |
| 55 | 跳跃游戏 | Medium | 跳跃距离能覆盖最后的索引即可 | |
| 455 | 分发饼干(或运动员匹配教练) | Easy | 每个饼干不可再分,把胃口和饼干排序后用双指针匹配 |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 56 | 合并区间 | Medium | 先对二维数组排序,然后以ans中的最后一个区间为基准,比较end值即可 |
|
| 435 | 无重叠区间(会议预定) | Medium | 转换思路,求最多不重叠区间,同样先排序(注意要按右边界排序,因为下一个区间的起点>当前区间的终点),然后找到最多不重叠区间,最后返回差值即为最少移除的区间数量 | |
| 452 | 用最少数量的箭引爆气球(重叠区间个数) | Medium | 用 #435 即可求解 | |
| 45 | 跳跃游戏 II(最小跳跃次数) | Medium | 同样用跳跃距离覆盖的思路,需要新增curEnd表示跳跃区间的右边界,当移动到右边界时更新curEnd为新的区间,并jump++ |
|
| 122 | 买卖股票的最佳时机 II(多次交易) | Medium | 由于不限制交易次数,只要今天比昨天涨了,就计算到利润 | |
| 134 | 加油站 | Medium | 同样要以增益的思路计算剩余油量不<0 | |
| 763 | 划分字母区间 | Medium | ||
| 135 | 分发糖果 | Hard |
动态规划¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 509 | 斐波那契数 | Easy | 多种解法:递归、记忆递归、自底向上迭代 | |
| 70 | 爬楼梯 | Easy | 斐波那契数 | |
| 746 | 使用最小花费爬楼梯(类似背包问题) | Easy | 状态转移方程dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]) |
|
| 121 | 买卖股票的最佳时机 | Easy | 先把最低价初始为极大值,然后不断取最低价和最大利润即可 | |
| 53 | 最大子数组和 | Medium |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 322 | 零钱兑换 | Medium | ||
| 300 | 最长递增子序列 | Medium | ||
| 5 | 最长回文子串 | Medium | ||
| 1143 | 最长公共子序列 | Medium | ||
| 72 | 编辑距离 | Medium | ||
| 198 | 打家劫舍 | Medium | ||
| 62 | 不同路径 | Medium | ||
| 64 | 最小路径和 | Medium | ||
| 139 | 单词拆分 | Medium | ||
| 152 | 乘积最大子数组 | Medium |
图论¶
基础必会
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 200 | 岛屿数量 | Medium | ||
| 547 | 省份数量 | Medium | ||
| 733 | 图像渲染 | Easy |
综合常考
| # | 题目 | 难度 | 备注 | 难度增强 |
|---|---|---|---|---|
| 207 | 课程表 | Medium | ||
| 210 | 课程表 II | Medium | ||
| 133 | 克隆图 | Medium | ||
| 127 | 单词接龙 | Hard | ||
| 695 | 岛屿的最大面积 | Medium |