算法题解导航
力扣题解导航:从“会写代码”到“会拆问题”
刷题不是比谁写得快,而是比谁能在压力下稳定拆题、给出正确且可解释的解法。 这部分按题型组织,目标是帮你建立一套可复用的解题框架。
刷题的核心目标
- 见到题目先识别模型,而不是立刻写代码。
- 把“思路”讲清楚:为什么这么做、复杂度为什么成立。
- 沉淀模板:滑动窗口、二分、回溯、DP 状态定义等。
- 形成复盘闭环:错误类型、边界条件、可优化点。
题解统一模板(每篇都尽量按这个来)
- 题意与限制(输入规模、边界条件)
- 核心思路(模型识别 + 关键不变量)
- Java 实现(可直接运行)
- 复杂度分析(时间 / 空间)
- 易错点与优化方向(面试加分项)
训练路线(建议 4 个阶段)
| 阶段 | 重点题型 | 训练目标 |
|---|---|---|
| 阶段 1 | 哈希、数组、双指针 | 建立基础操作与边界意识 |
| 阶段 2 | 滑动窗口、栈、二分查找、链表 | 熟练掌握常用模板 |
| 阶段 3 | 二叉树、图论、堆、贪心 | 提升结构化思维与全局视角 |
| 阶段 4 | 回溯、动态规划、多维动态规划 | 强化状态设计与搜索剪枝能力 |
题型目录(按能力分层)
- 基础结构:哈希、数组、链表、栈
- 搜索与遍历:二叉树、图论、回溯
- 策略与优化:双指针、滑动窗口、二分查找、贪心、堆
- 状态建模:动态规划、多维动态规划
- 综合技巧:子串、矩阵、技巧专题
面试时的表达模板(直接可用)
- 先定模型:这题本质是
xxx(如滑动窗口 / 二分 / DP)。 - 再给不变量:窗口内始终满足什么条件,或状态如何转移。
- 最后讲复杂度:时间 O(n)、空间 O(1) 的依据是什么。
- 补充边界:空数组、重复值、越界、溢出如何处理。
小结
把刷题当成“构建问题识别系统”,而不是“背答案比赛”。 你最终要拿到的能力是:题目一变形,依然能快速落地。
