AI
AI
资讯
alishangtian.com
首页
大模型
智能体
开源项目
研究前沿
行业动态
知识库
主题色 · THEME
靛蓝(默认)
极光
落日
薰衣草
海洋
森林
暮橙
石墨
自定义
恢复默认
提交线索
agent
anthropic
openai
huggingface daily papers
gpu
ai安全
jake wharton
it之家
solidot
港股
搜索:
LeetCode
共命中 14 条(服务端检索)
LeetCode
3. 无重复字符的最长子串:用不变量把 O(n²) 压到 O(n)
滑动窗口是双指针家族里最常用的范式,
LeetCode
3 正是它的代表作。本文从 O(n³) 暴力讲起,靠「窗口内无重复」这条不变量把复杂度压到 O(n),对比哈希表记下标与记计数两种收缩写法的取舍,拆解 abba、tmmzuxt 等经典陷阱用例,并把模板泛化到「至多包含 K 个不同字符」。
算法题解
精选
· 原创 · 4天前
阅读 54
·
访客 54
LeetCode
53. 最大子数组和:Kadane 算法的一步之遥
LeetCode
53 的题眼在状态定义:dp[i] 写成「以 i 结尾的最大子数组和」,转移一步到位;错写成「前 i 个的最大」就寸步难行。本文从 O(n²) 暴力讲到 O(1) 的 Kadane,再到分治进阶,附全负数边界与三解法对拍。
算法题解
精选
· 原创 · 10-7
阅读 64
·
访客 62
LeetCode
42. 接雨水:从暴力到双指针的四层跃迁
接雨水是「按列求水」模型的经典困难题。本文沿暴力、前缀后缀数组、单调栈、双指针四层递进,讲清每一层优化了什么、为什么对,重点证明双指针 O(1) 空间背后的短板效应,并盘点常见错误、边界用例与四个解法的本地差分验证结果。
算法题解
精选
· 原创 · 4天前
阅读 46
·
访客 46
LeetCode
236. 最近公共祖先:树形递归的第一课
最近公共祖先是二叉树递归的分水岭题目:解法只有十行,但「为什么两边都命中就是答案」的传播逻辑值得讲透。本文从容易走偏的路径记录法讲到后序递归的优雅解,指出 10 万节点链状树在 Python 里的递归爆栈陷阱,再给出父指针哈希的迭代版本——最后说清 git 的 merge-base、面向对象的菱形继承,用的都是同一个「找分叉点」的模型。
算法题解
精选
· 原创 · 6天前
阅读 50
·
访客 50
LeetCode
215. 数组中的第 K 个最大元素:不排序,怎么选出第 k 名
「找出第 k 大」是生产系统里真实存在的需求——排行榜、热搜、监控告警都靠它,而排序是最诚实的暴力。本文讲透两条不排序的路:大小为 k 的小顶堆(流式场景的天然答案)与随机化三路快速选择(平均 O(n) 的原地解法),附 10^6 数据的本地实测对比,并说清「全相同元素」这个让固定 pivot 快选退化到 O(n²) 的经典陷阱是怎么被拆掉的。
算法题解
精选
· 原创 · 6天前
阅读 49
·
访客 49
LeetCode
72. 编辑距离:一张表格治好你的「Hard 恐惧症」
编辑距离是序列动态规划的珠穆朗玛:暴力递归是指数级爆炸,但状态数只有区区 25 万个。本文从「为什么贪心必错」讲到状态定义、转移方程与边界来源,手工演算 horse 到 ros 的完整 DP 表格,再给出滚动数组的空间优化——最后说清为什么 git diff、拼写检查和基因比对里都有它的影子。
算法题解
精选
· 原创 · 6天前
阅读 108
·
访客 108
LeetCode
300. 最长递增子序列:从 O(n²) 到 O(n log n) 的两级跳
LIS 是子序列问题的祖师爷:O(n²) 的 DP 教你「以 i 结尾」的状态设计,O(n log n) 的贪心 + 二分教你「维护最有潜力的结尾」。tails 数组为什么不是 LIS 本身、严格递增该用 bisect_left 还是 bisect_right、怎么把一条真实的子序列还原出来、diff 工具为什么靠它对齐文本——一文讲透。
算法题解
精选
· 原创 · 6天前
阅读 48
·
访客 48
LeetCode
15. 三数之和:排序 + 双指针的教科书示范
三数之和是「两层枚举 + 相向双指针」的模板题,真正的考点不是找到三个数,而是在 O(n²) 里把重复三元组干净地排除。本文从暴力解的失败讲起,逐行拆解排序双指针与三条去重规则,附两处剪枝,全部代码本地跑通验证。
算法题解
精选
· 原创 · 10-7
阅读 53
·
访客 53
LeetCode
70. 爬楼梯:动态规划的第一课
爬楼梯是几乎所有 DP 教学的第一题:n 阶楼梯每次爬 1 或 2 阶,几种爬法?本文从「最后一步倒推」讲出递推式的直觉,展示暴力递归到 O(1) 空间滚动变量的三级演化,并解释为什么题目把 n 限到 45——那是一条整数溢出的边界线。
算法题解
精选
· 原创 · 10-7
阅读 48
·
访客 48
LeetCode
206. 反转链表:迭代、递归与「纸牌串」直觉
迭代版 prev/curr 双指针的三步摘插配「纸牌串」类比,讲透先存 next 防断链的指针纪律;递归版逐行拆解 head.next.next = head 的回头指与置空防环时机;附两版代码与边界用例本地实测、O(n)/O(1) 对 O(n)/O(n) 的复杂度对比与工程取舍。
算法题解
精选
· 原创 · 10-7
阅读 48
·
访客 48
LeetCode
200. 岛屿数量:DFS、BFS 与并查集三种解法
数岛屿的本质是在网格图上数连通分量。本文给出 DFS 沉岛、BFS 防爆栈、并查集合并三套完整解法与对比表,讲清各自的空间代价与适用场景,并指出修改原数组、重复入队、方向遗漏等易错点。
算法题解
精选
· 原创 · 10-6
阅读 56
·
访客 54
LeetCode
146. LRU 缓存:哈希表 + 双向链表的经典组合拳
LRU 缓存要求 get 与 put 都做到 O(1),单靠哈希表或单靠链表都做不到。本文解释为什么必须「哈希表 + 双向链表」组合,拆解哨兵节点等设计细节,给出 Python 与 Java 两版可直接提交的实现,并延伸到 LFU 与 Redis 的近似 LRU。
算法题解
精选
· 原创 · 10-6
阅读 55
·
访客 55
LeetCode
322. 零钱兑换:动态规划入门的第一道正餐
零钱兑换是动态规划的最佳入门题:最优子结构与重叠子问题齐备,又是完全背包的最小化版本。本文讲透状态设计与转移方程,给出可直接提交的 Python 代码,辨析无解哨兵、重复面额、循环顺序三个易错点,并用 BFS 最短路视角打通另一种理解。
算法题解
精选
· 原创 · 10-6
阅读 52
·
访客 52
LeetCode
33. 搜索旋转排序数组:一次二分讲透「分段有序」
旋转排序数组中查找目标是二分查找的变形题之王。本文讲透「分段有序」关键观察:任意 mid 切开必有一半完全有序,据此每步安全扔掉一半;给出可直接提交的 Python 实现与循环不变量思维,并拆解三个高频易错点。
算法题解
精选
· 原创 · 10-6
阅读 90
·
访客 90