前言
很多同学刷题、面试时都会有一个困惑:双指针、滑动窗口、DFS、前缀和、栈、数组这些东西,到底谁是算法?谁是工具?谁是基础?
经常出现的误区:把双指针当成独立算法、把DFS当成普通技巧、分不清什么能独立解题、什么只能辅助提速。
今天用一套极简、通俗、可落地的分类逻辑,一次性讲清算法面试所有核心内容,把所有考点分为三大类:数据结构(存储载体)、独立算法(完整解题方案)、优化技巧(辅助提速工具) ,看完彻底告别概念混乱。
一、核心总纲:三者通俗定位
用一句生活化比喻,秒懂三者关系,记住就能用一辈子:
- 数据结构 = 仓库/容器:负责数据怎么存、怎么摆,是所有操作的底层基础,可独立存在,不用解题也能单独定义使用。
- 独立算法 = 完整干活流程:一套成熟、完整的解题步骤,不靠其他辅助,就能单独解决一类算法题,是做题的核心答案。
- 优化技巧 = 提速小工具:没有独立解题能力,必须依附数据结构和独立算法存在,唯一作用:简化代码、降低时间复杂度、减少无效计算。
一句话终极总结:数据结构管存储,独立算法管解题,优化技巧管提速。
二、数据结构:所有算法的底层载体
核心本质:规定数据的存放规则、排列形式,提供增删改查的基础能力,是纯“存储层”内容,和解题逻辑无关。
特点:可以单独存在、单独实现,不依赖任何算法。
面试高频数据结构清单(通俗解读)
- 数组:连续的内存空间,靠下标快速取值,适合快速查询,不适合频繁中间增删。核心场景:子数组、双指针、前缀和所有题型。
- 链表:节点靠指针串联,内存不连续,查询慢、头尾增删快。核心场景:反转链表、判环、合并链表。
- 栈:后进先出,只能操作顶端数据,天然适配嵌套、回溯逻辑。核心场景:括号匹配、单调栈、递归回溯。
- 队列:先进先出,分层有序处理数据。核心场景:BFS层序遍历、滑动窗口。
- 哈希表:空间换时间,实现O(1)极速查找。核心场景:去重、两数之和、字符匹配、缓存。
- 二叉树/BST:分层树形结构,BST自带有序特性。核心场景:树的遍历、路径问题、有序查找。
- 堆(优先队列) :自动维护全局最大值/最小值。核心场景:TopK问题、多路归并、任务排序。
- 图:存储多节点、多关联关系。核心场景:岛屿问题、最短路径、任务依赖。
- 高阶结构(进阶面试) :线段树、树状数组(区间批量操作)、Trie字典树(字符串前缀匹配)。
三、独立算法:能单独解题的完整核心逻辑
核心本质:拥有固定、完整、标准的执行流程,自带解题逻辑,不需要依附其他技巧,单独就能解决一类经典问题。
重点区分:DFS、BFS、二分、DP、贪心、回溯、排序,全部是正经独立算法。
- 搜索类算法(树、图、网格必考)
- DFS 深度优先搜索:核心是「一条路走到黑,走不通再回头」,靠递归/栈实现。适配场景:二叉树遍历、岛屿统计、排列组合、迷宫探索。
- BFS 广度优先搜索:核心是「一层一层往外扩散」,靠队列实现。适配场景:层序遍历、无权图最短路径、腐烂橘子、迷宫寻路。
- 查找类算法
- 二分查找:核心是「利用有序性,每次砍掉一半无效数据」,对数级提速。适配场景:有序数组查找、旋转数组、二分猜答案题型。
- 排序类算法
- 快排/归并/堆排:核心是「按规则重构有序数据」。是很多题目的前置基础,先排序,才能用双指针、贪心解题。
- 动态规划 DP(面试重中之重)
- 核心本质:把大问题拆成重复的小问题,用数组缓存结果,杜绝重复计算。
- 适配场景:爬楼梯、背包问题、最长递增子序列、编辑距离、所有最优解求解问题。
- 贪心算法
- 核心本质:每一步只选当前最优解,无需回溯,局部最优累积成全局最优。
- 适配场景:区间合并、跳跃游戏、分发饼干。
- 回溯算法
- 核心本质:暴力枚举所有可能性,通过「选择-递归-撤销选择」遍历全部解空间。
- 适配场景:全排列、子集、N皇后、组合总和。
- 图论专属算法
- 并查集:快速管理元素连通关系,合并集合、判断是否连通。
- 拓扑排序:解决有向图的任务依赖、先后顺序问题。
- Dijkstra:求解带权图的最短路径。
- 字符串专属算法
- KMP:高效字符串匹配,跳过无效比对,避免暴力回溯。
四、优化遍历技巧:只能提速,不能独立解题
核心本质:所有技巧都没有独立解题逻辑,必须依附数组、链表、DFS、DP等载体或算法,作用只有两个:简化代码、降低时间复杂度。
大家常混淆的双指针、滑动窗口,全部属于这类!
高频核心技巧清单
- 双指针:用两个指针替代双层循环,把O(n²)暴力遍历优化为O(n),分相向、快慢两种形态。
- 滑动窗口:同向双指针的升级版,专门处理子数组、子串连续区间问题。
- 前缀和:提前预处理累加和,把复杂区间求和,变成简单减法运算。
- 差分:批量区间修改神器,把多次区间操作,简化为两次单点操作。
- 单调栈/单调队列:维护数据单调顺序,快速查找左右边界、区间最值,杜绝重复遍历。
- 哈希空间换时间:用哈希表把O(n)查找,直接优化为平均O(1)。
- 剪枝:DFS、回溯过程中,提前砍掉不可能的无效分支,大幅减少运算量。
- 记忆化搜索:缓存递归计算结果,解决重复子问题,是递归版DP的核心技巧。
- 二分答案:不直接解题,通过二分猜测答案,把枚举问题转为对数级查找。
- 排序预处理:先排序规整数据,为双指针、贪心、二分创造解题条件。
- 逆向思维:正向解题复杂时,反向推导,简化边界逻辑。
五、面试真题核心组合(看懂就吃透80%题型)
真实算法题几乎不会单一考察,全部是「数据结构+独立算法+优化技巧」三者组合,给大家列举高频经典搭配:
- 数组 + 排序(独立算法)+ 双指针(技巧) → 三数之和、四数之和
- 数组 + 栈(结构)+ 单调栈(技巧) → 每日温度、柱状图最大矩形
- 字符串 + 哈希表(结构)+ 滑动窗口(技巧) → 最长无重复子串、最小覆盖子串
- 二叉树 + DFS(独立算法)+ 剪枝(技巧) → 路径总和、二叉树路径问题
- 图 + 队列(结构)+ BFS(独立算法) → 腐烂的橘子、岛屿最短路径
- 数组 + 前缀和(技巧) → 子数组和为K、二维区域和查找
- 回溯(独立算法)+ 剪枝(技巧) → N皇后、组合总和进阶
六、终极背诵口诀(面试秒区分)
容器存数据,算法解问题,技巧提速度
1. 纯容器(数据结构) :数组、链表、栈、队列、哈希、树、图、堆
2. 真算法(独立解题) :DFS、BFS、二分、排序、DP、贪心、回溯、并查集、KMP
3. 小工具(优化技巧) :双指针、滑动窗口、前缀和、差分、单调栈、哈希优化、剪枝、记忆化、二分答案
结尾总结
搞懂这套分类逻辑,你就不再是“死刷题目”,而是懂底层、懂架构、懂优化的刷题者。
后续刷题看到任何题目,都可以快速拆解:用什么容器存数据?用什么核心算法解题?用什么技巧优化提速?这也是大厂面试核心考察的思维能力。