高频面试题核心解法:双指针(回文判断、滑动窗口求最长无重复子串)、链表(dummy节点统一边界、快慢指针找中点/判环)、递归树(明确当前节点操作与子树返回值)、dp(先准确定义状态再推转移方程)。

数组与字符串类题目:从双指针到滑动窗口
这类题占面试高频位置,核心是理解数据结构特性。比如判断回文串,用双指针从两端向中间收缩比转成列表再反转更省空间;找最长无重复子串,滑动窗口(左右指针+哈希表记录字符最新位置)是标准解法,关键在右指针扩张时更新字符位置,左指针只在遇到重复时跳到重复字符上一次位置的右边。
链表操作题:重点掌握虚拟头节点和快慢指针
反转链表、检测环、找中点、合并有序链表等题,几乎都绕不开两个技巧:一是加 dummy 节点统一边界处理(比如删除倒数第 N 个节点),避免空指针判断;二是快慢指针配合——快指针走两步、慢指针走一步,天然适合找中点或判断环,环入口则需数学推导(从头结点和相遇点同时出发,再次相遇即为入口)。
递归与树相关题:先想清楚递归定义和返回值
二叉树的遍历、最大深度、路径总和、对称性判断等,本质都是递归结构。写之前先明确:当前节点要做什么?它需要子树返回什么信息?例如判断是否平衡二叉树,不能只递归判断左右子树是否平衡,还要返回高度供父节点判断;而翻转二叉树只需递归翻转左右子树后交换指针,无需额外返回值。
动态规划入门题:从状态定义和状态转移开始
爬楼梯、买卖股票、最大子数组和等题,别一上来就想优化空间。先写出二维 DP 状态定义(如 dp[i][j] 表示前 i 个物品在容量 j 下的最大价值),再推导转移方程(选或不选、买或卖、延续或重开)。常见错误是状态定义模糊,比如“最大子数组和”应定义为“以第 i 个元素结尾的最大连续和”,而非“前 i 个元素中的最大和”。状态压缩通常在逻辑跑通后再做。
立即学习“Python免费学习笔记(深入)”;










