Thanks to visit codestin.com
Credit goes to github.com

Skip to content

dunwu/algorithm-tutorial

Repository files navigation

logo

star fork build code style

ALGORITHM-TUTORIAL

💾 algorithm-tutorial 是一个数据结构与算法教程。

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

📖 内容

img

💻 刷题

链表

双指针技巧秒杀七道链表题目

题目 掌握度
141. 环形链表 ✔️
142. 环形链表 II ✔️
160. 相交链表 ✔️
19. 删除链表的倒数第 N 个结点 ✔️
21. 合并两个有序链表 ✔️
23. 合并 K 个升序链表 ✔️
86. 分隔链表 ✔️
876. 链表的中间结点 ✔️
剑指 Offer 22. 链表中倒数第 k 个节点 ✔️

【练习】链表双指针经典习题

题目 掌握度
82. 删除排序链表中的重复元素 II ✔️
378. 有序矩阵中第 K 小的元素
373. 查找和最小的 K 对数字
2. 两数相加 ✔️
445. 两数相加 II ✔️

如何判断回文链表

单链表的花式反转方法汇总

题目 掌握度
206. 反转链表
92. 反转链表 II
25. K 个一组翻转链表

数组

双指针技巧秒杀七道数组题目

题目 掌握度
26. 删除有序数组中的重复项 ✔️
27. 移除元素 ✔️
283. 移动零 ✔️
704. 二分查找 ✔️
1. 两数之和 ✔️
167. 两数之和 II - 输入有序数组 ✔️
LCR 179. 查找总价格为目标值的两个商品 ✔️
LCR 006. 两数之和 II - 输入有序数组 ✔️
344. 反转字符串 ✔️
5. 最长回文子串

数组双指针经典习题

题目 掌握度
80. 删除有序数组中的重复项 II ✔️
125. 验证回文串 ✔️
75. 颜色分类 ✔️
88. 合并两个有序数组
977. 有序数组的平方 ✔️
1329. 将矩阵按对角线排序
1260. 二维网格迁移
867. 转置矩阵 ✔️
14. 最长公共前缀 ✔️

二维数组的花式遍历技巧

题目 掌握度
48. 旋转图像
54. 螺旋矩阵
59. 螺旋矩阵 II

滑动窗口算法

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

二分查找算法

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

前缀和数组

题目 掌握度
303. 区域和检索 - 数组不可变 ✔️
304. 二维区域和检索 - 矩阵不可变

差分数组

题目 掌握度
1094. 拼车
1109. 航班预订统计
370. 区间加法

栈和队列

队列实现栈以及栈实现队列

题目 掌握度
225. 用队列实现栈 ✔️
232. 用栈实现队列 ✔️

栈的经典习题

题目 掌握度
71. 简化路径 ✔️
143. 重排链表 ✔️
20. 有效的括号 ✔️
150. 逆波兰表达式求值 ✔️
388. 文件的最长绝对路径
155. 最小栈
最大频率栈](https://leetcode.cn/problems/maximum-frequency-stack/)

队列的经典习题

题目 掌握度
933. 最近的请求次数
622. 设计循环队列

单调栈算法模板

题目 掌握度
496. 下一个更大元素 I
503. 下一个更大元素 II
739. 每日温度
剑指 Offer II 038. 每日温度

二叉树

基础

题目 掌握度
104. 二叉树的最大深度 ✔️
111. 二叉树的最小深度 ✔️
144. 二叉树的前序遍历 ✔️
94. 二叉树的中序遍历 ✔️
145. 二叉树的后序遍历 ✔️
543. 二叉树的直径
114. 二叉树展开为链表 ✔️
226. 翻转二叉树 ✔️
654. 最大二叉树 ✔️
297. 二叉树的序列化与反序列化
222. 完全二叉树的节点个数 ✔️

用「遍历」思维解题

题目 掌握度
257. 二叉树的所有路径
129. 求根节点到叶节点数字之和 ✔️
199. 二叉树的右视图 ✔️
988. 从叶结点开始的最小字符串 ✔️
1022. 从根到叶的二进制数之和 ✔️
1457. 二叉树中的伪回文路径 ✔️
404. 左叶子之和 ✔️
623. 在二叉树中增加一行 ✔️

用「分解」思维解题

题目 掌握度
105. 从前序与中序遍历序列构造二叉树 ✔️
106. 从中序与后序遍历序列构造二叉树 ✔️
889. 根据前序和后序遍历构造二叉树 ✔️
331. 验证二叉树的前序序列化
894. 所有可能的真二叉树
998. 最大二叉树 II
1110. 删点成林

用「层序遍历」思维解题

题目 掌握度
102. 二叉树的层序遍历 ✔️
107. 二叉树的层序遍历 II ✔️
103. 二叉树的锯齿形层序遍历 ✔️
116. 填充每个节点的下一个右侧节点指针 ✔️
117. 填充每个节点的下一个右侧节点指针 II ✔️
662. 二叉树最大宽度 ✔️
515. 在每个树行中找最大值 ✔️
637. 二叉树的层平均值 ✔️
958. 二叉树的完全性检验 ✔️
1161. 最大层内元素和 ✔️
1302. 层数最深叶子节点的和 ✔️
1609. 奇偶树 ✔️
429. N 叉树的层序遍历
919. 完全二叉树插入器
剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - III. 从上到下打印二叉树 III
剑指 Offer 32 - I. 从上到下打印二叉树

二叉搜索树

题目 掌握度
230. 二叉搜索树中第 K 小的元素
538. 把二叉搜索树转换为累加树 ✔️
450. 删除二叉搜索树中的节点
700. 二叉搜索树中的搜索 ✔️
701. 二叉搜索树中的插入操作 ✔️
98. 验证二叉搜索树

动态规划

题目 掌握度
322. 零钱兑换
509. 斐波那契数

贪心算法

题目 掌握度
55. 跳跃游戏
45. 跳跃游戏 II

分治算法

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

📚 资料

🚪 传送

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

Releases

No releases published

Packages

No packages published

Languages