持续更新
刷LeetCode
从暴力解到最优解,记录每一道题目背后的思路,代码用 Python。
50 篇文章约 2 小时阅读
- 01两数之和用哈希表把查找降到 O(1),两数之和的标准解法。2026-01-23 · 3 分钟
- 02回文数判断整数回文,字符串反转最简单,数学方法练手动数字操作。2026-01-23 · 2 分钟
- 03有效的字母异位词字符频率统计判断异位词,Counter 最简洁。2026-01-23 · 3 分钟
- 04两个数组的交集两个数组求交集,Python set 一行搞定。2026-01-23 · 2 分钟
- 05验证回文串过滤非字母数字字符后判断回文,双指针法能省掉额外空间。2026-02-05 · 2 分钟
- 06移动零快慢双指针原地移动元素,这个模板后面会反复用到。2026-01-23 · 2 分钟
- 07移除元素移动零同款快慢双指针,去掉填充、加上返回值。2026-01-23 · 2 分钟
- 08删除有序数组中的重复项同样是快慢双指针,保留条件换成了和前一个元素比较。2026-01-26 · 2 分钟
- 09合并两个有序数组nums1 末尾有空位,从后往前填才不会覆盖还没处理的数据。2026-01-26 · 2 分钟
- 10区域和检索 - 数组不可变数组不变但要多次查询区间和,前缀和预处理换来 O(1) 查询。2026-01-29 · 2 分钟
- 11二分查找标准二分查找,左闭右闭区间写法。2026-01-29 · 2 分钟
- 12搜索插入位置二分查找的变形,找不到时循环结束的 i 正好是插入位置。2026-01-29 · 2 分钟
- 13爬楼梯第一道动态规划题,站在第 n 阶的来路只有两种,方法数直接相加。2026-01-29 · 2 分钟
- 14使用最小花费爬楼梯爬楼梯的 DP 变形,方法数换成最小花费,加法换成 min。2026-01-29 · 2 分钟
- 15反转链表三指针原地掰转链表方向,是后面链表题的基础操作。2026-01-29 · 2 分钟
- 16合并两个有序链表尾插法合并两个有序链表,dummy 节点简化头部处理。2026-01-29 · 2 分钟
- 17环形链表快慢指针判断链表有没有环,快指针追上慢指针就是有环。2026-01-31 · 2 分钟
- 18相交链表两个链表长度不同导致对不齐,交替遍历能巧妙抹平这个差值。2026-01-31 · 2 分钟
- 19二叉树的最大深度树的递归入门,当前节点深度 = 1 + 子树深度的较大值。2026-02-05 · 2 分钟
- 20翻转二叉树跟求深度同一个递归骨架,这次是修改树不是查询。2026-01-31 · 2 分钟
- 21对称二叉树判断树是否轴对称,需要一个辅助函数同时比较两个节点。2026-01-31 · 2 分钟
- 22路径总和递归传递剩余目标值,陷阱是空节点不等于叶子节点。2026-02-02 · 2 分钟
- 23二叉树的直径直径不一定过根节点,必须在每个节点递归时都检查一次。2026-02-02 · 2 分钟
- 24相同的树双节点递归判断两棵树是否相同,跟对称二叉树是姊妹题。2026-02-05 · 2 分钟
- 25二叉树的深度优先遍历前中后序遍历,区别只在根节点什么时候被访问。2026-02-05 · 2 分钟
- 26有效的括号括号匹配是后进先出,天然对应栈这个数据结构。2026-02-05 · 2 分钟
- 27二叉树的所有路径DFS 收集根到叶的路径,字符串不可变省去了显式回溯。2026-02-06 · 2 分钟
- 28买卖股票的最佳时机维护一路走来的历史最低价,每一步顺手更新最大利润。2026-02-12 · 2 分钟
- 29多数元素摩尔投票法 O(1) 空间找众数,靠一换一对消的直觉。2026-02-12 · 3 分钟
- 30图像渲染网格 DFS 是树 DFS 的自然扩展,2个方向变成4个方向。2026-03-01 · 2 分钟
- 31两数之和 II - 输入有序数组数组有序,对撞双指针能把空间从 O(n) 降到 O(1)。2026-01-26 · 2 分钟
- 32长度最小的子数组第一次遇到滑动窗口:窗口和不够就扩大,够了就收缩找更短的。2026-01-29 · 2 分钟
- 33环形链表 II找到环之后,一个指针回到起点同步走,再次相遇就是环的入口。2026-01-31 · 2 分钟
- 34打家劫舍跟爬楼梯同一个 DP 骨架,方案数的加法换成收益的取最大。2026-01-31 · 2 分钟
- 35无重复字符的最长子串滑动窗口 + 集合判重,跟最短子数组(209)对比着看。2026-02-02 · 2 分钟
- 36和为K的子数组前缀和加哈希表,把子数组求和问题变成两数之和的变体。2026-02-02 · 3 分钟
- 37二叉树的层序遍历第一次用 BFS,队列实现一层一层处理。2026-02-05 · 2 分钟
- 38路径总和 II跟收集所有路径同一个套路,只是列表可变,要么回溯要么每次传新列表。2026-02-06 · 3 分钟
- 39不同路径爬楼梯的二维版,从一维数组扩展成二维网格。2026-02-09 · 2 分钟
- 40最小路径和不同路径的进阶版,求和换成求最小代价。2026-02-09 · 2 分钟
- 41不同路径 II不同路径加上障碍物,堵住的格子和它连带的后续格子路径数都是 0。2026-02-09 · 2 分钟
- 42零钱兑换完全背包 DP,贪心会踩坑,必须把每种硬币数量都试一遍。2026-02-09 · 3 分钟
- 43分割等和子集问题转化成能不能凑出 sum/2,用 0/1 背包,倒序遍历保证每个数只用一次。2026-02-09 · 3 分钟
- 44子集回溯的入门题,关键是先画决策树,代码只是把树翻译成 Python。2026-02-12 · 3 分钟
- 45全排列跟子集同一个回溯框架,区别是能回头选、只在叶子记录。2026-02-12 · 2 分钟
- 46组合固定长度的子集——记录时机从每个节点改成只在深度=k 的时候。2026-02-12 · 2 分钟
- 47组合总和组合的变体,同一个数能重复选,递归传自己而不是下一个。2026-02-12 · 3 分钟
- 48买卖股票的最佳时机 II不限交易次数,反而变简单——贪心吃掉每一段上涨就是最优解。2026-02-12 · 2 分钟
- 49买卖股票的最佳时机 III第一次遇到状态机 DP,四个交易阶段各自维护一条状态。2026-02-12 · 4 分钟
- 50买卖股票的最佳时机 IV把最多两次交易泛化成最多 k 次,4 个变量变成两个长度 k 的数组。2026-02-12 · 2 分钟