经典算法题
经典算法题可以检验一种技巧是否真正理解。这里把许多常见于 LeetCode 的问题展开成轨迹,逐项展示查找、指针移动和提前返回,并对应到代码行。
重点是短解法背后的不变量。两数之和先查询再插入,避免复用同一索引。LRU 缓存让哈希表和双向链表维护相同条目,在期望 O(1) 时间回答不同问题。接雨水说明较小的累计边界为什么可以确定一列水量。三数之和先排序,固定锚点后用双指针扫描,并通过跳过相同邻居消除重复。
建议先学两数之和,理解哈希查询;若还未学过,先补搜索分类中的双指针,再学三数之和与接雨水。LRU 缓存则是独立的数据结构组合练习。
如何使用这些课程
先运行默认例子,再停在关键步骤之前预测下一状态。随后只改一个输入:选择不存在有效数对的目标、更新已有缓存条目,或把盆地改成无法蓄水的形状。边界路径会暴露实现的前提。
全部经典算法题
操作输入,跟踪同步代码,并用根据轨迹生成的问题检查理解。