Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

dunwu/algorithm-tutorial

Open more actions menu

Repository files navigation

logo

star fork build code style

ALGORITHM

💾 algorithm 是一个数据结构与算法学习笔记。

掌握数据结构与算法,你看待问题的深度,解决问题的角度就会完全不一样。

📖 内容

img

💻 刷题

链表

基础操作

题目 难度 掌握度
1290. 二进制链表转整数 💚 ✔️

双指针技巧

题目 难度 掌握度
141. 环形链表 💚 ✔️
142. 环形链表 II 💛 ✔️
160. 相交链表 💚 ✔️
19. 删除链表的倒数第 N 个结点 💛 ✔️
21. 合并两个有序链表 💚 ✔️
23. 合并 K 个升序链表 ❤️ ✔️
86. 分隔链表 💛 ✔️
876. 链表的中间结点 💚 ✔️
面试题 02. 返回倒数第 k 个节点 💚 ✔️
面试题 02.01. 移除重复节点 💚 ✔️
203. 移除链表元素 💚 ✔️
328. 奇偶链表 💛 ✔️
LCR 136. 删除链表的节点 💚 ✔️
83. 删除排序链表中的重复元素 💚 ✔️
82. 删除排序链表中的重复元素 II 💛 ✔️
2. 两数相加 💛 ✔️
445. 两数相加 II 💛 ✔️

单链表反转

题目 难度 掌握度
61. 旋转链表 💛 ✔️
206. 反转链表 💚 ✔️
92. 反转链表 II 💛 ✔️
25. K 个一组翻转链表 ❤️ ✔️

分治

题目 难度 掌握度
148. 排序链表 💛

回文链表

题目 难度 掌握度
234. 回文链表 💚 ✔️

数组

基础

题目 难度 掌握度
485. 最大连续 1 的个数 💚 ✔️
747. 至少是其他数字两倍的最大数 💚 ✔️

双指针技巧

题目 难度 掌握度
27. 移除元素 💚 ✔️
283. 移动零 💚 ✔️
LCR 179. 查找总价格为目标值的两个商品 💚 ✔️
1. 两数之和 💚 ✔️
67. 二进制求和 💚 ✔️
167. 两数之和 II - 输入有序数组
LCR 006. 两数之和 II - 输入有序数组
💛 ✔️
26. 删除有序数组中的重复项 💚 ✔️
80. 删除有序数组中的重复项 II 💛 ✔️
344. 反转字符串 💚 ✔️
125. 验证回文串 💚 ✔️
5. 最长回文子串 💛 ✔️
75. 颜色分类 💛 ✔️
88. 合并两个有序数组 💚 ✔️
977. 有序数组的平方 💚 ✔️
1329. 将矩阵按对角线排序 💛 ✔️
1260. 二维网格迁移 💚 ✔️
867. 转置矩阵 💚 ✔️
14. 最长公共前缀 💚 ✔️
15. 三数之和 💛
56. 合并区间 💛 ✔️

二维数组遍历

题目 难度 掌握度
151. 反转字符串中的单词 💛 ✔️
48. 旋转图像 💛 ✔️
54. 螺旋矩阵
LCR 146. 螺旋遍历二维数组
💛 ✔️
59. 螺旋矩阵 II 💛 ✔️
498. 对角线遍历 💛
面试题 01.08. 零矩阵 💛 ✔️

滑动窗口算法

题目 难度 掌握度
3. 无重复字符的最长子串 💛 ✔️
438. 找到字符串中所有字母异位词 💛 ✔️
567. 字符串的排列 💛 ✔️
76. 最小覆盖子串 ❤️ ✔️
1658. 将 x 减到 0 的最小操作数 💛 ✔️
713. 乘积小于 K 的子数组 💛 ✔️
1004. 最大连续 1 的个数 III 💛 ✔️
424. 替换后的最长重复字符 💛 ✔️
217. 存在重复元素 💚 ✔️
219. 存在重复元素 II 💛 ✔️
220. 存在重复元素 III ❤️
209. 长度最小的子数组 💛 ✔️
395. 至少有 K 个重复字符的最长子串 💛

二分查找算法

题目 难度 掌握度
34. 在排序数组中查找元素的第一个和最后一个位置 💛 ✔️
35. 搜索插入位置 💚 ✔️
704. 二分查找 💚 ✔️
LCR 172. 统计目标成绩的出现次数 💚 ✔️
875. 爱吃香蕉的珂珂 💛
1011. 在 D 天内送达包裹的能力 💛 ✔️
410. 分割数组的最大值 ❤️

前缀和数组

题目 难度 掌握度
303. 区域和检索 - 数组不可变 💚 ✔️
724. 寻找数组的中心下标 💚 ✔️
1013. 将数组分成和相等的三个部分 💚 ✔️
304. 二维区域和检索 - 矩阵不可变 💛

差分数组

题目 难度 掌握度
1094. 拼车 💛 ✔️
1109. 航班预订统计 💛 ✔️

栈和队列

队列

题目 难度 掌握度
225. 用队列实现栈 💚 ✔️
933. 最近的请求次数 💚
622. 设计循环队列 💛
641. 设计循环双端队列 💛
1670. 设计前中后队列 💛
2073. 买票需要的时间 💚 ✔️
373. 查找和最小的 K 对数字 💛
378. 有序矩阵中第 K 小的元素 💛

题目 难度 掌握度
20. 有效的括号 💚 ✔️
232. 用栈实现队列 💚 ✔️
682. 棒球比赛 💚 ✔️
844. 比较含退格的字符串 💚 ✔️
71. 简化路径 💛 ✔️
143. 重排链表 💛 ✔️
150. 逆波兰表达式求值 💛 ✔️
388. 文件的最长绝对路径 💛
155. 最小栈 💛 ✔️
面试题 03.05. 栈排序 💛 ✔️
895. 最大频率栈 ❤️

单调栈

题目 难度 掌握度
496. 下一个更大元素 I 💚 ✔️
503. 下一个更大元素 II 💛 ✔️
739. 每日温度
剑指 Offer II 038. 每日温度
💛 ✔️
1019. 链表中的下一个更大节点 💛 ✔️
1944. 队列中可以看到的人数 ❤️
1475. 商品折扣后的最终价格 💛 ✔️
901. 股票价格跨度 💛
402. 移掉 K 位数字 💛
853. 车队 💛
581. 最短无序连续子数组 💛

单调队列

题目 难度 掌握度
LCR 184. 设计自助结算系统 💛
239. 滑动窗口最大值 ❤️
1438. 绝对差不超过限制的最长连续子数组 💛
862. 和至少为 K 的最短子数组 ❤️
918. 环形子数组的最大和 💛

二叉树

题目 难度 掌握度
104. 二叉树的最大深度 💚 ✔️
111. 二叉树的最小深度 💚 ✔️
543. 二叉树的直径 💚 ✔️
114. 二叉树展开为链表 💛 ✔️
226. 翻转二叉树 💚 ✔️
654. 最大二叉树 💛 ✔️
297. 二叉树的序列化与反序列化 ❤️
222. 完全二叉树的节点个数 💚 ✔️

DFS

题目 难度 掌握度
144. 二叉树的前序遍历 💚 ✔️
94. 二叉树的中序遍历 💚 ✔️
145. 二叉树的后序遍历 💚 ✔️
872. 叶子相似的树 💚 ✔️

用「遍历」思维解题

题目 难度 掌握度
257. 二叉树的所有路径 💚 ✔️
129. 求根节点到叶节点数字之和 💛 ✔️
199. 二叉树的右视图 💛 ✔️
988. 从叶结点开始的最小字符串 💛 ✔️
1022. 从根到叶的二进制数之和 💚 ✔️
1457. 二叉树中的伪回文路径 💛 ✔️
404. 左叶子之和 💚 ✔️
623. 在二叉树中增加一行 💛 ✔️
508. 出现次数最多的子树元素和 💛 ✔️
563. 二叉树的坡度 💚 ✔️
814. 二叉树剪枝 💛 ✔️
1325. 删除给定值的叶子节点 💛 ✔️

用「分解」思维解题

题目 难度 掌握度
105. 从前序与中序遍历序列构造二叉树 💛 ✔️
106. 从中序与后序遍历序列构造二叉树 💛 ✔️
889. 根据前序和后序遍历构造二叉树 💛 ✔️
331. 验证二叉树的前序序列化 💛
894. 所有可能的真二叉树 💛
998. 最大二叉树 II 💛
1110. 删点成林 💛
100. 相同的树 💛 ✔️
101. 对称二叉树 💛 ✔️
951. 翻转等价二叉树 💛 ✔️
124. 二叉树中的最大路径和 ❤️
236. 二叉树的最近公共祖先 💛

用「层序遍历」思维解题

题目 难度 掌握度
102. 二叉树的层序遍历 💛 ✔️
107. 二叉树的层序遍历 II 💛 ✔️
103. 二叉树的锯齿形层序遍历 💛 ✔️
116. 填充每个节点的下一个右侧节点指针 💛 ✔️
117. 填充每个节点的下一个右侧节点指针 II 💛 ✔️
662. 二叉树最大宽度 💛 ✔️
515. 在每个树行中找最大值 💛 ✔️
637. 二叉树的层平均值 💚 ✔️
958. 二叉树的完全性检验 💛 ✔️
1161. 最大层内元素和 💛 ✔️
1302. 层数最深叶子节点的和 💛 ✔️
1609. 奇偶树 💛 ✔️
919. 完全二叉树插入器 💛 ✔️
863. 二叉树中所有距离为 K 的结点 💛
LCR 149. 彩灯装饰记录 I 💛 ✔️
LCR 150. 彩灯装饰记录 II 💚 ✔️
LCR 151. 彩灯装饰记录 III 💛 ✔️

二叉搜索树

题目 难度 掌握度
1038. 从二叉搜索树到更大和树 💛 ✔️
230. 二叉搜索树中第 K 小的元素 💛 ✔️
538. 把二叉搜索树转换为累加树 💛 ✔️
450. 删除二叉搜索树中的节点 💛 ✔️
700. 二叉搜索树中的搜索 💚 ✔️
701. 二叉搜索树中的插入操作 💛 ✔️
98. 验证二叉搜索树 💛 ✔️
96. 不同的二叉搜索树 💛
95. 不同的二叉搜索树 II 💛
108. 将有序数组转换为二叉搜索树 💚 ✔️
783. 二叉搜索树节点最小距离 💚 ✔️
235. 二叉搜索树的最近公共祖先 💛
1373. 二叉搜索子树的最大键值和 ❤️

N 叉树

题目 难度 掌握度
429. N 叉树的层序遍历 💛 ✔️
559. N 叉树的最大深度 💚 ✔️
589. N 叉树的前序遍历 💚 ✔️
590. N 叉树的后序遍历 💚 ✔️

BFS/DFS

题目 难度 掌握度
797. 所有可能的路径 💛

环检测及拓扑排序算法

题目 难度 掌握度
207. 课程表 💛
210. 课程表 II 💛

二分图判定算法

题目 难度 掌握度
785. 判断二分图
LCR 106. 判断二分图
💛
886. 可能的二分法 💛

并查集算法

题目 难度 掌握度
130. 被围绕的区域 💛
684. 冗余连接 💛 ✔️
990. 等式方程的可满足性 💛 ✔️

Dijkstra 算法

题目 难度 掌握度
743. 网络延迟时间 💛
1631. 最小体力消耗路径 💛
1514. 概率最大的路径 💛
787. K 站中转内最便宜的航班 💛
1368. 使网格图至少有一条有效路径的最小代价 ❤️

DFS / 回溯算法

排列、组合、子集问题

子集、组合、排列相关问题,都可以考虑使用回溯算法求解。

题目 难度 掌握度
46. 全排列 💛 ✔️
47. 全排列 II 💛 ✔️
78. 子集 💛 ✔️
90. 子集 II 💛 ✔️
77. 组合 💛 ✔️
39. 组合总和 💛 ✔️
40. 组合总和 II 💛 ✔️
216. 组合总和 III 💛 ✔️

岛屿问题

题目 难度 掌握度
200. 岛屿数量 💛
1254. 统计封闭岛屿的数目 💛
1020. 飞地的数量 💛
695. 岛屿的最大面积 💛
1905. 统计子岛屿 💛

数独、N 皇后问题

题目 难度 掌握度
37. 解数独 ❤️
51. N 皇后 ❤️
52. N皇后 II ❤️

练习

题目 难度 掌握度
967. 连续差相同的数字 💛
491. 非递减子序列 💛
980. 不同路径 III ❤️
526. 优美的排列 💛
131. 分割回文串 💛
93. 复原 IP 地址 💛
89. 格雷编码 💛
17. 电话号码的字母组合 💛
79. 单词搜索 💛

BFS

题目 难度 掌握度
752. 打开转盘锁 💛
773. 滑动谜题 ❤️
919. 完全二叉树插入器 💛 ✔️
841. 钥匙和房间 💛 ✔️
433. 最小基因变化 💛
1926. 迷宫中离入口最近的出口 💛 ✔️
1091. 二进制矩阵中的最短路径 💛 ✔️
994. 腐烂的橘子 💛 ✔️
365. 水壶问题 💛
721. 账户合并 💛
127. 单词接龙 ❤️

动态规划

斐波那契

题目 难度 掌握度
509. 斐波那契数 💚 ✔️
1137. 第 N 个泰波那契数 💚 ✔️
70. 爬楼梯 💚 ✔️
746. 使用最小花费爬楼梯 💚 ✔️
198. 打家劫舍 💛 ✔️
740. 删除并获得点数 💛 ✔️

一维

题目 难度 掌握度
2140. 解决智力问题 💛
2466. 统计构造好字符串的方案数 💛
91. 解码方法 💛
983. 最低票价 💛
264. 丑数 II 💛
1201. 丑数 III 💛
313. 超级丑数 💛

矩阵

题目 难度 掌握度
118. 杨辉三角 💚 ✔️
119. 杨辉三角 II 💚 ✔️
62. 不同路径 💛 ✔️
63. 不同路径 II 💛 ✔️
64. 最小路径和 💛 ✔️
120. 三角形最小路径和 💛 ✔️
931. 下降路径最小和 💛 ✔️
221. 最大正方形 💛 ✔️

字符串

题目 难度 掌握度
5. 最长回文子串 💛 ✔️
139. 单词拆分 💛
72. 编辑距离 💛
583. 两个字符串的删除操作 💛
712. 两个字符串的最小ASCII删除和 💛
516. 最长回文子序列 💛
115. 不同的子序列 ❤️

最长递增/公共子序列

题目 难度 掌握度
300. 最长递增子序列 💛
673. 最长递增子序列的个数 💛
646. 最长数对链 💛 ✔️
1218. 最长定差子序列 💛
1027. 最长等差数列 💛
1143. 最长公共子序列 💛
1035. 不相交的线 💛
1312. 让字符串成为回文串的最少插入次数 ❤️

背包问题

题目 难度 掌握度
416. 分割等和子集 💛
322. 零钱兑换 💛
518. 零钱兑换 II 💛

买卖股票的最佳时间/状态机

其他

题目 难度 掌握度
53. 最大子数组和 💛
354. 俄罗斯套娃信封问题 ❤️

贪心算法

题目 难度 掌握度
561. 数组拆分 💚
55. 跳跃游戏 💛
45. 跳跃游戏 II 💛

分治算法

题目 掌握度
23. 合并 K 个升序链表 ✔️

数学

题目 难度 掌握度
66. 加一 💚 ✔️
263. 丑数 💚 ✔️

📚 资料

🚪 传送

| 技术文档归档 | 算法和数据结构教程系列 |

Releases

No releases published

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.