从直觉到代码讲透一个算法:为什么这么想、复杂度怎么算、边界怎么处理、常见变体。
刷题复盘、面试准备、技术分享、教学material。
帮我讲透一个算法。 【主题】{{算法或题目}} 【语言】{{语言}} 【我的水平】{{我的理解程度}} 【用途】{{用途}} 输出结构: 1. 一句话本质:这个算法在解决什么「重复计算」的问题(不讲定义)。 2. 直觉推导:从一个暴力解出发,逐步说明为什么会超时、哪部分在重复、用什么观察消掉重复。要有具体例子走一遍。 3. 正确性:为什么这样不会漏解(用不变量或循环不变式说明,2-3 句)。 4. 代码:{{语言}} 实现,变量名表意,边界条件逐个标注注释。给两个版本——易懂版和优化版。 5. 复杂度:时间与空间,写清每一步为什么是这个量级,不只写结论。 6. 边界与陷阱:至少 6 条(空输入、单元素、全相同、极大值溢出、索引越界、重复元素)。 7. 手写检查清单:{{用途}}场景下,写代码前先确认的 4 件事。 8. 变体 3 个:改动一个条件后思路怎么变,各给一句话。 9. 自测用例:5 组输入输出,含 1 组极端值。 要求:不讲废话,不堆术语;每个概念第一次出现时用一句人话解释。
合上答案默写一遍,再对照差异,比反复读有效。
常用结构可以记,但推导过程必须会,否则变体就废。