根据小红书和牛客网的面经总结。【⭐】代表博主推测的高频题。
目录
- [1 DP:](#1 DP:)
- [2 双指针 / 滑动窗口:](#2 双指针 / 滑动窗口:)
- [3 二分查找:](#3 二分查找:)
- [4 贪心算法:](#4 贪心算法:)
- [5 DFS / BFS:](#5 DFS / BFS:)
- [6 堆 / 优先队列:](#6 堆 / 优先队列:)
- [7 栈:](#7 栈:)
- [8 链表:](#8 链表:)
- [9 其他:](#9 其他:)
- 全部题目:
1 DP:
-
最长递增子序列 (LIS, LeetCode 300)
- 题目:300. 最长递增子序列
-
编辑距离【⭐】
- 题目:72. 编辑距离
-
Word Break (变种)【⭐】
- 题目:139. 单词拆分
- 注:变种通常指 II (140),但基础版为 139。
-
最长公共子串【⭐】
- 题目:1143. 最长公共子序列
- 注:LeetCode 中没有直接名为"最长公共子串"的题目。通常指 1143(子序列)。如果是严格的"子串"(连续),对应题目为 718. 最长重复子数组。
-
2D 接雨水,接雨水 (LeetCode 42)【⭐】
- 1D 题目:42. 接雨水
- 2D 题目:407. 接雨水 II
-
乘积最大子数组 (LeetCode 152)
- 题目:152. 乘积最大子数组
-
买卖股票的最佳时机 (LeetCode 121/122/123/188)
-
零钱兑换 (LeetCode 322)
- 题目:322. 零钱兑换
-
二叉树最大路径和 (LeetCode 124)
-
Leetcode-902. 最大为 N 的数字组合
2 双指针 / 滑动窗口:
-
最长无重复子序列 / 子串 (LeetCode 3)【⭐】
-
三数之和 (LeetCode 15)【⭐】
- 题目:15. 三数之和
-
两个升序序列的合并【⭐】
- 题目:21. 合并两个有序链表
- 注:如果是数组合并,对应 88. 合并两个有序数组。
-
Leetcode-30. 串联所有单词的子串
-
有效三角形的个数 (LeetCode 611)
-
最长回文子串 (LeetCode 5)
- 题目:5. 最长回文子串
3 二分查找:
- Leetcode-81. 搜索旋转排序数组 II,33 搜索旋转排序数组
- 题目 (无重复):33. 搜索旋转排序数组
- 题目 (有重复):81. 搜索旋转排序数组 II
- 在排序数组中查找元素的第一个和最后一个位置 (LeetCode 34)
- 有序矩阵中第 K 小的元素 (LeetCode 378) 【⭐】
- 求浮点数 sqrt(牛顿法/二分)
- 题目:69. x 的平方根
- 数组中的第 K 个最大元素 (LeetCode 215) 【⭐】
4 贪心算法:
- Leetcode-1221. 分割平衡字符串
- 合并区间 (LeetCode 56)
- 题目:56. 合并区间
5 DFS / BFS:
-
全排列 (LeetCode 46)
- 题目:46. 全排列
-
组合 (LeetCode 77)
- 题目:77. 组合
-
岛屿数量【⭐】
- 题目:200. 岛屿数量
-
二叉树最近公共祖先 (带父指针)【⭐】
- 题目:1650. 二叉树的最近公共祖先 III
- 注:标准版(不带父指针)为 236. 二叉树的最近公共祖先。
-
字符串解码 (LeetCode 394)
- 题目:394. 字符串解码
-
Leetcode-902. 最大为 N 的数字组合
-
Leetcode-103. 二叉树的锯齿形层序遍历
-
Leetcode-2359. 找到离给定两个节点最近的节点
6 堆 / 优先队列:
- 合并 K 个升序链表 (LeetCode 23)
- 求字符串出现最多的字符及次数 【⭐】
- 说明:这是一道基础面试题,LeetCode 没有完全对应的原题。
- 推荐练习:451. 根据字符出现频率排序
7 栈:
- 有效的括号 (LeetCode 20)
- 题目:20. 有效的括号
8 链表:
- Leetcode-148. 排序链表
- 题目:148. 排序链表
- Leetcode-面试题 02.05. 链表求和
- k 个一组翻转链表 (LeetCode 25)
9 其他:
- 有效数字 (LeetCode 65)
- 题目:65. 有效数字
- Leetcode-470. 用 Rand7() 实现 Rand10()
全部题目:
- 最长无重复子序列 / 子串 (LeetCode 3)
- 最长递增子序列 (LIS, LeetCode 300)
- 题目:300. 最长递增子序列
- 三数之和 (LeetCode 15)
- 题目:15. 三数之和
- 编辑距离
- 题目:72. 编辑距离
- Word Break (变种)
- 题目:139. 单词拆分
- 注:变种通常指 II (140),但基础版为 139。
- 最长公共子串
- 题目:1143. 最长公共子序列
- 注:LeetCode 中没有直接名为"最长公共子串"的题目。通常指 1143(子序列)。如果是严格的"子串"(连续),对应题目为 718. 最长重复子数组。
- 两个升序序列的合并
- 题目:21. 合并两个有序链表
- 注:如果是数组合并,对应 88. 合并两个有序数组。
- 2D 接雨水,接雨水 (LeetCode 42)
- 1D 题目:42. 接雨水
- 2D 题目:407. 接雨水 II
- 岛屿数量
- 题目:200. 岛屿数量
- 二叉树最近公共祖先 (带父指针)
- 题目:1650. 二叉树的最近公共祖先 III
- 注:标准版(不带父指针)为 236. 二叉树的最近公共祖先。
- 求字符串出现最多的字符及次数
- 说明:这是一道基础面试题,LeetCode 没有完全对应的原题。
- 推荐练习:451. 根据字符出现频率排序
- 有效数字 (LeetCode 65)
- 题目:65. 有效数字
- Leetcode-30. 串联所有单词的子串
- Leetcode-1221. 分割平衡字符串
- Leetcode-148. 排序链表
- 题目:148. 排序链表
- Leetcode-面试题 02.05. 链表求和
- Leetcode-902. 最大为 N 的数字组合
- Leetcode-81. 搜索旋转排序数组 II,33 搜索旋转排序数组
- 题目 (无重复):33. 搜索旋转排序数组
- 题目 (有重复):81. 搜索旋转排序数组 II
- Leetcode-2359. 找到离给定两个节点最近的节点
- Leetcode-103. 二叉树的锯齿形层序遍历
- Leetcode-470. 用 Rand7() 实现 Rand10()
- 在排序数组中查找元素的第一个和最后一个位置 (LeetCode 34)
- 有效三角形的个数 (LeetCode 611)
- 乘积最大子数组 (LeetCode 152)
- 题目:152. 乘积最大子数组
- 数组中的第 K 个最大元素 (LeetCode 215)
- 有序矩阵中第 K 小的元素 (LeetCode 378)
- 最长回文子串 (LeetCode 5)
- 题目:5. 最长回文子串
- 买卖股票的最佳时机 (LeetCode 121/122/123/188)
- 零钱兑换 (LeetCode 322)
- 题目:322. 零钱兑换
- 合并区间 (LeetCode 56)
- 题目:56. 合并区间
- 字符串解码 (LeetCode 394)
- 题目:394. 字符串解码
- 有效的括号 (LeetCode 20)
- 题目:20. 有效的括号
- 全排列 (LeetCode 46)
- 题目:46. 全排列
- 组合 (LeetCode 77)
- 题目:77. 组合
- 合并 K 个升序链表 (LeetCode 23)
- k 个一组翻转链表 (LeetCode 25)
- 二叉树最大路径和 (LeetCode 124)
- 求浮点数 sqrt(牛顿法/二分)
- 题目:[69. x 的平方根](