跳转至

算法笔记 · 从一道题到一类问题

题解的价值不仅在于答案,更在于可以迁移的思路。这里按照解题模式整理笔记,阅读时建议关注:状态表示、循环不变量、边界条件与复杂度。

按问题特征寻找工具

如果问题涉及…… 可以先考虑 代表笔记
快速查找、计数、去重 哈希表 两数之和、字母异位词分组
有序数组或原地整理 双指针 移动零、三数之和
连续区间与固定长度 滑动窗口 定长子串中元音的最大数目
节点连接与访问顺序 链表 反转链表、环形链表
有序性或单调判定 二分查找 二分查找导读
层次结构与递归子问题 二叉树 二叉树导读
嵌套、回退、最近未匹配元素 栈 有效的括号、最小栈
动态地取出最小/最大元素 堆与优先队列 二叉堆、优先队列
动态前缀和、区间查询 树状数组与线段树 树状数组、线段树

这张表用于产生候选思路,不代表题目一定适合某种方法。输入范围、是否允许修改原数组,以及操作频率都会影响选择。

一道题的阅读顺序

  1. 明确输入、输出和约束,写出最直接的解法。
  2. 找到重复工作:重复搜索、重复求和,还是重复遍历?
  3. 说明改进方法保存了哪些信息。
  4. 用小案例走一遍,再检查空输入、重复值和极端边界。
  5. 比较时间复杂度、空间复杂度与代码维护成本。

独立复现比直接复制更有效

读懂题解后关闭页面,重新写一遍。若卡住,记录具体缺失的推理,再回到对应段落。

进阶补充

还不确定阅读顺序?查看算法学习路线。