LeetCode 精选题解 | Python实现 · 中文详解 · 多解法对比
不只是答案 —— 更是解题思维的训练场
- 🇨🇳 全中文 — 题目、思路、代码注释均为中文
- 🧠 重思路 — 每题标注核心算法模式与时间复杂度
- 🔀 多解法 — 经典题目提供多种解法与复杂度对比
- 📊 模式归类 — 按算法模式(双指针/DP/回溯等)分类
- 📝 可运行 — 所有代码包含类型提示和测试入口
| # | 题目 | 核心方法 | 时间复杂度 |
|---|---|---|---|
| 1 | 两数之和 | 哈希表 | O(n) |
| 20 | 有效的括号 | 栈 | O(n) |
| 21 | 合并两个有序链表 | 迭代 | O(m+n) |
| 70 | 爬楼梯 | 动态规划 | O(n) |
| 88 | 合并两个有序数组 | 逆向双指针 | O(m+n) |
| 94 | 二叉树的中序遍历 | 栈迭代 | O(n) |
| 104 | 二叉树的最大深度 | DFS递归 | O(n) |
| 118 | 杨辉三角 | 动态规划 | O(n²) |
| 121 | 买卖股票的最佳时机 | 一次遍历 | O(n) |
| 136 | 只出现一次的数字 | 位运算 | O(n) |
| 141 | 环形链表 | 快慢指针 | O(n) |
| 206 | 反转链表 | 迭代 | O(n) |
| 234 | 回文链表 | 快慢指针+反转 | O(n) |
| 268 | 丢失的数字 | 数学 | O(n) |
| 344 | 反转字符串 | 双指针 | O(n) |
| 704 | 二分查找 | 二分查找 | O(log n) |
| # | 题目 | 核心方法 | 时间复杂度 |
|---|---|---|---|
| 2 | 两数相加 | 链表遍历 | O(max(m,n)) |
| 3 | 无重复字符的最长子串 | 滑动窗口 | O(n) |
| 5 | 最长回文子串 | 中心扩展 | O(n²) |
| 11 | 盛最多水的容器 | 双指针 | O(n) |
| 15 | 三数之和 | 排序+双指针 | O(n²) |
| 33 | 搜索旋转排序数组 | 二分查找 | O(log n) |
| 39 | 组合总和 | 回溯 | O(2^n) |
| 42 | 接雨水 | 双指针 | O(n) |
| 46 | 全排列 | 回溯 | O(n·n!) |
| 49 | 字母异位词分组 | 哈希+排序 | O(n·klogk) |
| 53 | 最大子数组和 | Kadane算法 | O(n) |
| 56 | 合并区间 | 排序 | O(nlogn) |
| 102 | 二叉树的层序遍历 | BFS | O(n) |
| 155 | 最小栈 | 辅助栈 | O(1) |
| 198 | 打家劫舍 | 动态规划 | O(n) |
| 200 | 岛屿数量 | DFS/BFS | O(mn) |
| 238 | 除自身以外数组的乘积 | 前后缀乘积 | O(n) |
| 300 | 最长递增子序列 | 二分+贪心 | O(nlogn) |
| 347 | 前K个高频元素 | 哈希+排序 | O(nlogk) |
| 394 | 字符串解码 | 栈 | O(n) |
| # | 题目 | 核心方法 | 时间复杂度 |
|---|---|---|---|
| 42 | 接雨水 | 双指针 | O(n) |
掌握模式比刷题量更重要 —— 以下是本仓库覆盖的核心解题模式:
适用于有序数组、链表问题
场景: 两端逼近、快慢指针、滑动窗口
例题: #11盛水、#42接雨水、#160相交链表、#283移动零
适用于连续子数组/子串问题
场景: 最长/最短满足条件的子串
例题: #3无重复字符最长子串
适用于有序搜索、答案单调性
场景: 旋转数组、寻找边界、答案二分
例题: #33搜索旋转数组、#300最长递增子序列、#704二分查找
适用于组合、排列、子集枚举
场景: 所有可行解、剪枝优化
例题: #39组合总和、#46全排列
适用于最优子结构、重叠子问题
场景: 最值、计数、可行性
例题: #53最大子数组和、#70爬楼梯、#198打家劫舍、#338比特位计数
适用于树/图结构问题
场景: DFS递归、BFS层序、连通性
例题: #94中序遍历、#102层序遍历、#200岛屿数量、#226翻转二叉树
适用于匹配、嵌套、最近相关性
场景: 括号匹配、单调栈、表达式求值
例题: #20有效括号、#155最小栈、#232栈实现队列、#394字符串解码
适用于位操作、状态压缩
场景: 异或消对、位计数、状态压缩DP
例题: #136只出现一次的数字、#338比特位计数
📖 完整模式总结: docs/advanced-patterns.md — 含单调栈、前缀和、差分数组、并查集、线段树、字典树等进阶模式
Easy ████████████████░░░░ 16 (48%)
Medium ████████████████░░░░ 16 (48%)
Hard ██░░░░░░░░░░░░░░░░░░ 1 ( 3%)
| 维度 | 统计 |
|---|---|
| 总题数 | 33 |
| Python题解 | 30+ |
| Markdown详解 | 20+ |
| 算法模式覆盖 | 8大模式 |
# 克隆仓库
git clone https://github.com/MysteryMulberry/leetcode-solutions-cn.git
cd leetcode-solutions-cn
# 查看特定题解
cat solutions/0001-两数之和/solution.py
# 运行测试
python solutions/0001-两数之和/solution.py每个题解文件包含标准化的docstring头、类型提示和实现:
# docstring: 题号、题目、难度、方法、复杂度
# 类型提示: List[int], Optional[ListNode] 等
# 实现: 最优解法 + 测试入口
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for i, num in enumerate(nums):
if target - num in hashmap:
return [hashmap[target - num], i]
hashmap[num] = i
return []leetcode-solutions-cn/
├── solutions/ # 题解目录
│ ├── 0001-两数之和/
│ │ └── solution.py
│ ├── 0042-接雨水/
│ │ └── solution.py
│ └── ...
├── docs/ # 模式总结与学习笔记
│ ├── advanced-patterns.md
│ ├── problem-patterns.md
│ └── ...
├── daily_practice.md # 每日练习记录
└── README.md
入门 → 双指针 → 滑动窗口 → 二分查找 → 栈/队列
→ BFS/DFS → 动态规划 → 回溯 → 贪心 → 高级数据结构
- 入门阶段: #1两数之和, #20有效括号, #70爬楼梯
- 基础模式: #11盛水, #3滑动窗口, #33二分查找
- 树与图: #94中序遍历, #102层序遍历, #200岛屿数量
- 动态规划: #53最大子数组, #198打家劫舍, #300最长递增子序列
- 综合提升: #42接雨水, #39组合总和, #46全排列
欢迎提交新题解或优化现有解法!
- Fork → Feature Branch → Commit → PR
- 题解需包含:题目docstring、类型提示、测试入口
- 同一题目多种解法欢迎提交
刷题路上不孤单,给个 ⭐ Star 一起进步!
Made with ❤️ by @MysteryMulberry