209道 算法刷题计划
说明:完成情况中的✅表示已完成,❌表示看懂了。
刷题顺序:
基础算法的掌握 (20题)---->链表(23道)---->队列与栈(10道)---->堆(优先队列)---->
二叉树(25道)---->哈希表(20道)---->图(20道)---->回溯(19道)---->
贪心算法 (10道)---->动态规划 (24道)---->数学知识与位运算 (8道)---->并查集(5道)---->
排序(9道)---->字符串与其他(16道)
具体题目
基础算法的掌握
序号 | 题目 | 难度 | 完成进度 |
---|---|---|---|
1 | 两数之和 | 简单 | ✅ |
13 | 罗马数字转整数 | 简单 | ✅ |
26 | 删除有序数组中的重复项 | 简单 | ✅ |
2022 | 将一维数组转变成二维数组 | 简单 | |
剑指 Offer 39 | 数组中出现次数超过一半的数字 | 简单 | |
88 | 合并两个有序数组 | 简单 | |
704 | 二分查找 | 简单 | ✅ |
69 | x 的平方根 | 简单 | |
118 | 杨辉三角 | 简单 | |
125 | 验证回文串 | 简单 | |
344 | 反转字符串 | 简单 | |
191 | 位1的个数 | 简单 | |
326 | 3的幂 | 简单 | |
204 | 计数质数 | 简单 | |
2427 | 公因子的数目 | 中等 | |
1979 | 找出数组的最大公约数 | 中等 | |
1984 | 学生分数的最小差值 | 简单 | |
面试题61 | 扑克牌中的顺子 | 简单 | |
812 | 最大三角形面积 | 中等 | |
292 | Nim 游戏 | 简单 | ✅ |
链表
序号 | 题目 | 难度 | 完成进度 |
---|---|---|---|
6 | 从尾到头打印链表 | 简单 | ✅ |
160 | 相交链表 | 简单 | ✅ |
203 | 移除链表元素 | 简单 | ✅ |
19 | 删除链表的倒数第N个结点 | 中等 | ✅ |
876 | 链表的中间结点 | 简单 | ✅ |
21 | 合并两个有序链表 | 简单 | ✅ |
61 | 旋转链表 | 中等 | ✅ |
141 | 环形链表 | 简单 | ✅ |
142 | 环形链表 II | 中等 | |
206 | 反转链表 | 简单 | ✅ |
92 | 反转链表 II | 中等 | |
25 | K 个一组翻转链表 | 困难 | |
83 | 删除排序链表中的重复元素 | 简单 | |
82 | 删除排序链表中的重复元素 II | 中等 | |
148 | 排序链表 | 中等 | |
234 | 回文链表 | 简单 | ✅ |
382 | 链表随机节点 | 中等 | |
138 | 复制带随机指针的链表 | 中等 | |
146 | LRU 缓存 | 中等 | |
460 | LFU 缓存 | 困难 | |
707 | 设计链表 | 中等 | |
1290 | 二进制链表转整数 | 简单 | ✅ |
1472 | 设计浏览器历史记录 | 中等 |
队列与栈
序号 | 题目 | 难度 | 完成进度 |
---|---|---|---|
225 | 用队列实现栈 | 简单 | ✅ |
232 | 用栈实现队列 | 简单 | |
20 | 有效的括号 | 简单 | ✅ |
32 | 最长有效括号 | 困难 | |
150 | 逆波兰表达式求值 | 中等 | |
155 | 最小栈 | 简单 | |
239 | 滑动窗口最大值 | 困难 | |
347 | 前 K 个高频元素 | 中等 | |
295 | 数据流的中位数 | 困难 | |
451 | 根据字符出现频率排序 | 中等 |
堆(优先队列)
题号 | 题目 | 难度等级 | 完成进度 |
---|---|---|---|
703 | 数据流中的第K大元素 | 简单 | |
347 | 前K个高频元素 | 中等 | |
215 | 数组中的第K个最大元素 | 中等 | |
295 | 数据流的中位数 | 困难 | |
373 | 查找和最小的K对数字 | 中等 | |
378 | 有序矩阵中第K小的元素 | 中等 | |
480 | 滑动窗口中位数 | 困难 | |
499 | 迷宫 III | 困难 | |
502 | IPO | 中等 | |
632 | 最小的区间 | 困难 | |
692 | 前K个高频单词 | 中等 | |
703 | 数据流中的第K大元素 | 简单 | |
767 | 重构字符串 | 中等 | |
778 | 水位上升的泳池中游泳 | 困难 | |
973 | 最接近原点的K个点 | 中等 | |
1167 | 连接棒材的最低费用 | 中等 | |
1269 | 停在原地的方案数 | 困难 | |
1354 | 构建回文串 II | 困难 | |
1358 | 包含所有三种字符的子字符串数目 | 中等 | |
1387 | 将整数按权重排序 | 中等 |
二叉树
序号 | 题目 | 难度 | 完成进度 |
---|---|---|---|
94 | 二叉树的中序遍历 | 简单 | ✅ |
144 | 二叉树的前序遍历 | 简单 | ✅ |
145 | 二叉树的后序遍历 | 简单 | ✅ |
103 | 二叉树的锯齿形层序遍历 | 中等 | ❌ |
102 | 二叉树的层序遍历 | 中等 | ❌ |
107 | 二叉树的层序遍历 II | 中等 | |
105 | 从前序与中序遍历序列构造二叉树 | 中等 | |
106 | 从中序与后序遍历序列构造二叉树 | 中等 | |
230 | 二叉搜索树中第K小的元素 | 中等 | |
剑指 Offer 27 | 二叉树的镜像 | 简单 | |
101 | 对称二叉树 | 简单 | |
104 | 二叉树的最大深度 | 简单 | |
662 | 二叉树最大宽度 | 中等 | |
110 | 平衡二叉树 | 简单 | |
199 | 二叉树的右视图 | 中等 | |
112 | 路径总和 | 简单 | |
113 | 路径总和 II | 中等 | |
437 | 路径总和 III | 中等 | |
257 | 二叉树的所有路径 | 简单 | |
129 | 求根到叶子节点数字之和 | 中等 | |
235 | 二叉搜索树的最近公共祖先 | 中等 | |
236 | 二叉树的最近公共祖先 | 中等 | |
124 | 二叉树中的最大路径和 | 困难 | |
114 | 二叉树展开为链表 | 中等 | |
297 | 二叉树的序列化与反序列化 | 困难 |
哈希表
题号 | 题目 | 难度等级 | 完成进度 |
---|---|---|---|
1 | 两数之和 | 简单 | ❌ |
169 | 多数元素 | 简单 | ❌ |
217 | 存在重复元素 | 简单 | |
219 | 存在重复元素 II | 简单 | |
242 | 有效的字母异位词 | 简单 | |
290 | 单词规律 | 简单 | |
350 | 两个数组的交集 II | 简单 | |
387 | 字符串中的第一个唯一字符 | 简单 | |
594 | 最长和谐子序列 | 简单 | |
706 | 设计哈希映射 | 简单 | |
748 | 最短完整词 | 简单 | |
819 | 最常见的单词 | 简单 | |
1002 | 查找常用字符 | 简单 | |
49 | 字母异位词分组 | 中等 | |
438 | 找到字符串中所有字母异位词 | 中等 | |
447 | 回旋镖的数量 | 中等 | |
454 | 四数相加 II | 中等 | |
560 | 和为 K 的子数组 | 中等 | |
740 | 删除并获得点数 | 中等 | |
974 | 和可被 K 整除的子数组 | 中等 |
图
题号 | 题目 | 难度等级 | 完成进度 |
---|---|---|---|
733 | 图像渲染 | 简单 | |
200 | 岛屿数量 | 中等 | |
785 | 判断二分图 | 中等 | |
207 | 课程表 | 中等 | |
210 | 课程表 II | 中等 | |
399 | 除法求值 | 中等 | |
417 | 太平洋大西洋水流问题 | 中等 | |
529 | 扫雷游戏 | 中等 | |
547 | 朋友圈 | 中等 | |
560 | 和为 K 的子数组 | 中等 | |
639 | 解码方法 II | 困难 | |
677 | 键值映射 | 中等 | |
765 | 情侣牵手 | 困难 | |
797 | 所有可能的路径 | 中等 | |
815 | 公交路线 | 困难 | |
886 | 可能的二分法 | 中等 | |
997 | 找到小镇的法官 | 简单 | |
1203 | 项目管理 | 困难 | |
1207 | 独一无二的出现次数 | 简单 | |
1489 | 找到最小生成树里的关键边和伪关键边 | 困难 |
回溯
序号 | 题目 | 难度 | 完成进度 |
---|---|---|---|
401 | 二进制手表 | 简单 | |
22 | 括号生成 | 中等 | |
17 | 电话号码的字母组合 | 中等 | |
93 | 复原IP地址 | 中等 | |
39 | 组合总和 | 中等 | |
40 | 组合总和 II | 中等 | |
216 | 组合总和 III | 中等 | |
46 | 全排列 | 中等 | |
47 | 全排列 II | 中等 | |
567 | 字符串的排列 | 中等 | |
78 | 子集 | 中等 | |
90 | 子集 II | 中等 | |
12 | 矩阵中的路径 | 中等 | |
13 | 机器人的运动范围 | 中等 | |
34 | 二叉树中和为某一值的路径 | 中等 | |
89 | 格雷编码 | 中等 | |
51 | N皇后 | 困难 | |
52 | N皇后 II | 困难 | |
37 | 解数独 | 困难 |
贪心算法(10道)
题目编号 | 题目名称 | 难度 | 完成情况 |
---|---|---|---|
455 | 分发饼干 | 简单 | |
121 | 买卖股票的最佳时机 | 简单 | |
55 | 跳跃游戏 | 中等 | |
45 | 跳跃游戏 II | 中等 | |
435 | 无重叠区间 | 中等 | |
714 | 买卖股票的最佳时机含手续费 | 中等 | |
921 | 使括号有效的最少添加 | 中等 | |
134 | 加油站 | 中等 | |
376 | 摆动序列 | 中等 | |
738 | 单调递增的数字 | 中等 |
动态规划(24道)
题目编号 | 题目名称 | 难度 | 完成情况 |
---|---|---|---|
70 | 爬楼梯 | 容易 | |
112 | 路径总和 | 容易 | |
113 | 路径总和 II | 中等 | |
62 | 不同路径 | 中等 | |
63 | 不同路径 II | 中等 | |
64 | 最小路径和 | 中等 | |
198 | 打家劫舍 | 中等 | |
213 | 打家劫舍 II | 中等 | |
221 | 最大正方形 | 中等 | |
322 | 零钱兑换 | 中等 | |
518 | 零钱兑换 II | 中等 | |
5 | 最长回文子串 | 中等 | |
718 | 最长重复子数组 | 中等 | |
1143 | 最长上升子序列 | 中等 | |
121 | 买卖股票的最佳时机 | 容易 | |
122 | 买卖股票的最佳时机 II | 中等 | |
123 | 买卖股票的最佳时机 III | 困难 | |
188 | 买卖股票的最佳时机 IV | 困难 | |
42 | 接雨水 | 困难 | |
72 | 编辑距离 | 困难 | |
10 | 正则表达式匹配 | 困难 | |
152 | 乘积最大子数组 | 中等 | |
174 | 地下城游戏 | 困难 | |
85 | 最大矩形 | 困难 |
数学知识与位运算(8道)
题目编号 | 题目名称 | 难度 | 完成情况 |
---|---|---|---|
1201 | 丑数 III | 中等 | |
914 | 卡牌分组 | 简单 | |
1799 | N 次操作后的最大分数和 | 困难 | |
204 | 计数质数 | 中等 | |
172 | 阶乘后的零 | 中等 | |
136 | 只出现一次的数字 | 简单 | |
137 | 只出现一次的数字 II | 中等 | |
260 | 只出现一次的数字 III | 中等 |
并查集(5道)
题目编号 | 题目名称 | 难度 | 完成情况 |
---|---|---|---|
200 | 岛屿数量 | 中等 | |
547 | 省份数量 | 中等 | |
695 | 岛屿的最大面积 | 中等 | |
1020 | 飞地的数量 | 中等 | |
721 | 账户合并 | 中等 |
排序(9道)
题目编号 | 题目名称 | 难度 | 完成情况 |
---|---|---|---|
912 | 排序数组 | 中等 | |
315 | 计算右侧小于当前元素的个数 | 困难 | |
561 | 数组拆分 | 简单 | |
1122 | 数组的相对排序 | 简单 | |
268 | 丢失的数字 | 简单 | |
215 | 数组中的第K个最大元素 | 中等 | |
347 | 前 K 个高频元素 | 中等 | |
剑40 | 最小的 k 个数 | 简单 | |
剑51 | 数组中的逆序对 | 困难 |
字符串与其他(16道)
题目编号 | 题目名称 | 难度 | 完成情况 |
---|---|---|---|
14 | 最长公共前缀 | 简单 | |
6 | N 字形变换 | 中等 | |
43 | 字符串相乘 | 中等 | |
87 | 扰乱字符串 | 困难 | |
208 | 实现 Trie (前缀树) | 中等 | |
415 | 字符串相加 | 简单 | |
541 | 反转字符串 II | 简单 | |
31 | 下一个排列 | 中等 | |
41 | 缺失的第一个正数 | 困难 | |
50 | Pow(x, n) | 中等 | |
54 | 螺旋矩阵 | 中等 | |
59 | 螺旋矩阵 II | 中等 | |
65 | 有效数字 | 困难 | |
268 | 丢失的数字 | 简单 | |
153 | 寻找旋转排序数组中的最小值 | 中等 | |
154 | 寻找旋转排序数组中的最小值 II | 困难 |