Files
snailclimb--javaguide/docs/cs-basics/algorithms/classical-algorithm-problems-recommendations.md
wehub-resource-sync bdaa917396
Docs Test / Test docs (push) Failing after 1s
chore: import upstream snapshot with attribution
2026-07-13 11:57:49 +08:00

17 KiB

title, description, category, tag, head
title description category tag head
经典算法思想总结(含 LeetCode 题目推荐) 总结二分、双指针、滑动窗口、DFS/BFS、回溯、动态规划、贪心、分治、拓扑排序、并查集、位运算等高频算法思想,并给出题型识别、模板、代表题和复盘重点。 计算机基础
算法
LeetCode
面试
meta
name content
keywords 算法思想,二分查找,双指针,滑动窗口,DFS,BFS,回溯,动态规划,贪心,分治,拓扑排序,并查集,位运算,LeetCode题目推荐

算法思想不要孤立背。面试里更有用的问法是:什么信号提示我该用它?模板里最容易错的地方在哪里?如果面试官改条件,我应该从哪个变量或状态开始调整?

这份题单按思想组织,每一类都给出“识别信号、常用模板、代表题、复盘重点”。题目数量控制在能代表模板的范围内,先把这些题讲明白,比机械刷更多题更划算。

怎么用这份题单

不要一上来就把所有题目按顺序刷完。更适合面试准备的方式是:先读对应的模板文章,确认自己能手写核心代码,再做“必刷题”,最后用“进阶题”检查边界和变体。

目标 建议动作
快速建立模板 先读 二分查找双指针与滑动窗口DFS/BFS 这些高频模板文章
补齐搜索和 DP 继续读 回溯算法动态规划,每类至少手写 2 道基础题
面试前查漏补缺 贪心算法Top K 问题并查集 补齐常见变体
复盘自己的答案 每题写下题型识别信号、核心变量含义、复杂度、边界样例。如果这些讲不清,说明这题还没真正掌握

二分查找

项目 内容
识别信号 有序数组、单调条件、找边界、找最小可行值或最大可行值
常用模板 基础二分、左边界、右边界、答案二分
必刷题 704. 二分查找34. 在排序数组中查找元素的第一个和最后一个位置
进阶题 35. 搜索插入位置875. 爱吃香蕉的珂珂
复盘重点 循环条件、mid 计算、边界更新后是否会死循环

双指针

项目 内容
识别信号 有序数组、原地修改、两端向中间收缩、链表快慢追赶
常用模板 左右指针、快慢指针、读写指针
必刷题 26. 删除有序数组中的重复项977. 有序数组的平方
进阶题 15. 三数之和142. 环形链表 II
复盘重点 指针含义要固定,去重条件不要漏,链表题先画 3 个节点

滑动窗口

项目 内容
识别信号 连续子数组、连续子串、最长/最短、窗口内满足某个条件
常用模板 固定窗口、可变窗口、计数 Map
必刷题 3. 无重复字符的最长子串209. 长度最小的子数组
进阶题 76. 最小覆盖子串438. 找到字符串中所有字母异位词
复盘重点 什么时候扩右边界,什么时候缩左边界,窗口内变量如何维护

DFS 与 BFS

项目 内容
识别信号 树遍历、图遍历、矩阵连通块、最短步数、层序遍历
常用模板 递归 DFS、栈模拟 DFS、队列 BFS、层序 BFS
必刷题 102. 二叉树的层序遍历200. 岛屿数量
进阶题 994. 腐烂的橘子127. 单词接龙
复盘重点 访问标记、越界判断、BFS 层数统计

回溯算法

项目 内容
识别信号 枚举所有方案、路径选择、组合、排列、子集、棋盘约束
常用模板 路径 path、选择列表、递归层、撤销选择
必刷题 77. 组合78. 子集
进阶题 39. 组合总和51. N 皇后
复盘重点 递归参数代表什么,剪枝条件放在循环前还是循环内

动态规划

项目 内容
识别信号 求最优值、方案数、能否到达、子序列、背包、区间合并
常用模板 一维 DP、二维 DP、滚动数组、背包 DP
必刷题 70. 爬楼梯322. 零钱兑换
进阶题 300. 最长递增子序列416. 分割等和子集
复盘重点 dp[i] 的含义、初始化、遍历顺序、是否能压缩空间

贪心算法

项目 内容
识别信号 每一步选择当前最合适的对象,常伴随排序、区间、跳跃、买卖
常用模板 排序后选择、维护最远边界、区间合并/覆盖
必刷题 455. 分发饼干55. 跳跃游戏
进阶题 45. 跳跃游戏 II435. 无重叠区间
复盘重点 贪心策略为什么不会错,反例能否推翻当前策略

分治算法

项目 内容
识别信号 问题可以拆成同类子问题,子问题结果能合并
常用模板 递归拆分、子问题求解、合并结果
必刷题 108. 将有序数组转换为二叉搜索树148. 排序链表
进阶题 23. 合并 K 个升序链表215. 数组中的第 K 个最大元素
复盘重点 递归出口、左右区间是否重叠、合并复杂度

拓扑排序

项目 内容
识别信号 课程依赖、任务依赖、有向无环图、判断是否能完成
常用模板 入度数组 + 队列,或 DFS 三色标记
必刷题 207. 课程表
进阶题 210. 课程表 II269. 火星词典
复盘重点 入度什么时候减,结果数量是否等于节点数量

并查集

项目 内容
识别信号 连通性、分组、朋友圈、冗余边、等式关系
常用模板 findunion、路径压缩、按大小合并
必刷题 547. 省份数量
进阶题 684. 冗余连接990. 等式方程的可满足性
复盘重点 find 是否路径压缩,什么时候判断冲突

位运算

项目 内容
识别信号 奇偶、是否为 2 的幂、只出现一次、状态压缩
常用模板 异或、与运算清最低位 1、位掩码枚举
必刷题 136. 只出现一次的数字231. 2 的幂
进阶题 191. 位 1 的个数78. 子集
复盘重点 异或性质、n & (n - 1) 的含义、负数位表示

复习路线入口

这篇文章只保留经典题型和题单推荐,7 天速刷和 30 天系统路线统一维护在算法面试复习总览。后续如果调整复习节奏,只需要更新总览页,避免多个题单里的路线表互相漂移。