"Algorithm is the art of efficiency."
本仓库用于系统性记录我的算法学习之路。不仅仅是 AC 的代码堆砌,更包含了解题思路的推导、数学证明以及通用算法模板的提炼。
- 工程化 (Engineering): 所有代码均包含详细注释,遵循 PEP8 规范,具备可读性与可复用性。
- 体系化 (Systematic): 从线性的数组链表到非线性的树与图,再到动态规划与贪心,构建完整的知识图谱。
- 深度化 (In-depth): 拒绝死记硬背,通过
README.md复盘每道题的时间复杂度与空间复杂度,探究最优解。
.
├── 📂 day01_array/ # 按天/专题组织的训练单元
│ ├── solution.py # Python 题解源码 (Type Hinted)
│ └── README.md # 📝 核心:解题思路、图解与复杂度分析
├── 📂 day23_subsequence/
│ ├── ...
├── 📂 notes/ # 🧠 核心资产:通用算法模板
│ ├── dp_knapsack_template.md
│ ├── backtracking_template.md
│ └── binary_tree_patterns.md
└── README.md # 项目主页
| Day | Topic (专题) | Problems (题目) | Diff | Solution & Notes | Key Takeaways (核心考点) |
|---|---|---|---|---|---|
| 01 | Array & Hash | 1. Two Sum 27. Remove Element |
🟢 | Link | 哈希表空间换时间 |
| 04 | Linked List | 206. Reverse Linked List 141. Linked List Cycle |
🟢 | Link | 双指针迭代 / 递归 |
| 05 | Linked List+ | 21. Merge Two Sorted Lists 19. Remove Nth Node From End 20. Valid Parentheses |
🟢 🟡 |
Link | 虚拟头节点 / 栈的应用 |
| 07 | Stack & Queue | 232. Implement Queue using Stacks 225. Implement Stack using Queues 239. Sliding Window Maximum |
🟢 🔴 |
Link | 单调队列处理滑动窗口 |
| 08 | Binary Tree | 104. Max Depth of Binary Tree 226. Invert Binary Tree 101. Symmetric Tree |
🟢 | Link | 递归思维 (DFS) |
| 09 | Tree Advanced | 102. Level Order Traversal 98. Validate BST 236. Lowest Common Ancestor |
🟡 | Link | BFS 层序遍历 / LCA 后序遍历 |
| Day | Topic (专题) | Problems (题目) | Diff | Solution & Notes | Key Takeaways (核心考点) |
|---|---|---|---|---|---|
| 10 | Backtracking | 77. Combinations 46. Permutations 17. Letter Combinations |
🟡 | Link | 回溯模板:递归+撤销 |
| 11 | Backtracking+ | 78. Subsets 90. Subsets II 51. N-Queens |
🟡 🔴 |
Link | 去重逻辑 / 棋盘问题 |
| 12 | Greedy Basics | 455. Assign Cookies 122. Best Time to Buy Stock II 55. Jump Game |
🟢 🟡 |
Link | 局部最优推全局最优 |
| 13 | Greedy Mid | 45. Jump Game II 134. Gas Station 435. Non-overlapping Intervals |
🟡 | Link | 覆盖范围 / 区间调度排序 |
| 14 | Greedy Adv | 56. Merge Intervals 763. Partition Labels 738. Monotone Increasing Digits |
🟡 | Link | 区间合并 / 逆序贪心 |
| Day | Topic (专题) | Problems (题目) | Diff | Solution & Notes | Key Takeaways (核心考点) |
|---|---|---|---|---|---|
| 15 | DP Basics | 509. Fibonacci Number 70. Climbing Stairs 746. Min Cost Climbing Stairs |
🟢 | Link | DP 五部曲 / 滚动数组优化 |
| 16 | 0-1 Knapsack | 0-1 Knapsack Theory 416. Partition Equal Subset Sum |
🟡 | Link | 倒序遍历 / 滚动数组 |
| 17 | Knapsack Vars | 1049. Last Stone Weight II 494. Target Sum 474. Ones and Zeroes |
🟡 | Link | 求组合数公式 / 二维费用背包 |
| 18 | Complete Pack | 322. Coin Change 279. Perfect Squares |
🟡 | Link | 正序遍历 / 凑满问题 |
| 19 | Pack Order | 518. Coin Change II 377. Combination Sum IV 139. Word Break |
🟡 | Link | 组合(先物后包) vs 排列(先包后物) |
| 20 | House Robber | 198. House Robber 213. House Robber II 337. House Robber III |
🟡 | Link | 环形DP / 树形DP (后序) |
| 21 | Stock Series | 121. Stock I (One Transaction) 122. Stock II (Unlimited) 123. Stock III (2 Transactions) |
🟢 🔴 |
Link | 状态机 DP / 状态拆分 |
| 22 | Stock Adv | 188. Stock IV (k Transactions) 309. Stock with Cooldown 714. Stock with Transaction Fee |
🔴 🟡 |
Link | 冷冻期状态定义 / 通用解法 |
| 23 | Subsequence | 300. Longest Increasing Subseq (LIS) 674. Longest Continuous Incr Subseq 1143. Longest Common Subseq (LCS) |
🟡 | Link | 子序列(不连续) vs 子数组(连续) |
| 24 | String_DP | 115.不同的子序列 (LIS) 583.两个字符串的删除操作 1035.不相交的线 |
🟡 🔴🟡 |
Link | 字符串dp |
| 25 | String_DP2 | 72. 编辑距离 (Edit Distance) 647. 回文子串 (Palindromic Substrings) |
🔴🟡 | Link | 编辑距离/回文字符 |
(持续更新中... Next: Edit Distance & Palindromes)
这里是我总结的“杀手锏”,用于应对面试中的常见模式:
- 背包问题全家桶: 0-1背包(倒序)、完全背包(正序)、排列 vs 组合的遍历顺序总结。
- 股票问题通解: 一个状态机模型解决 6 道股票题。
- 回溯算法模板: 包含去重 (
nums[i]==nums[i-1]) 和剪枝技巧。 - 二叉树遍历: 递归与迭代的统一写法,以及 LCA 问题的后序遍历思想。
- IDE: VS Code (LeetCode Extension)
- Language: Python 3
- Environment: WSL2 (Ubuntu) + Anaconda
- Deploy: Github Actions (Planned)
- School: Sun Yat-sen University (SYSU)
- Focus: Deep Learning, NLP, Algorithm Design
- Status: 2027 Master Graduate (Expected)
Last Updated: 2026-01-08