Skip to content

面试真题分类

按难度分类

整理 LeetCode 高频 DP 面试题,方便针对性练习。


简单难度 ⭐

题号题目类型关键词
70爬楼梯**基础问题**斐波那契
509斐波那契数**基础问题**一维DP
118杨辉三角序列路径压缩
198打家劫舍**基础问题**一维DP
413等差数列划分序列差分思想
256粉刷房子路径行状态
121买卖股票最佳时机**股票问题**单次交易
746使用最小花费爬楼梯**基础问题**一维DP

中等难度 ⭐⭐

序列DP

题号题目类型
300最长递增子序列**序列问题**
1143最长公共子序列**序列问题**
72编辑距离**序列问题**
516最长回文子序列序列
5最长回文子串区间
647回文子串个数区间

背包DP

题号题目类型
416分割等和子集0/1背包
494目标和0/1背包
474一和零二维背包
518零钱兑换 II完全背包
322零钱兑换完全背包+最少硬币
377组合总和 IV完全背包
139单词拆分完全背包

路径DP

题号题目类型
62不同路径**路径问题**
63不同路径 II**路径问题**
64最小路径和**路径问题**
120三角形最小路径和**路径问题**
174地下城游戏**路径问题**

股票DP

题号题目类型
122买卖股票最佳时机 II**股票问题**
123买卖股票最佳时机 III**股票问题**
188买卖股票最佳时机 IV**股票问题**
309最佳买卖股票含冷冻期**股票问题**
714买卖股票含手续费**股票问题**

区间DP

题号题目类型
516最长回文子序列区间
131分割回文串区间
312戳气球**区间DP**
375猜数字大小 II博弈
486预测赢家博弈

树形DP

题号题目类型
124二叉树最大路径和**树形DP**
337打家劫舍 III**树形DP**
543二叉树直径**树形DP**
687最长同值路径树形

状态压缩

题号题目类型
698划分为k个相等的子集**状态压缩DP**
473火柴拼正方形**状态压缩DP**
526优美的排列状态压缩

困难难度 ⭐⭐⭐

题号题目类型
10正则表达式匹配序列
72编辑距离**序列问题**
174地下城游戏**路径问题**
329矩阵中的最长递增路径DAG/记忆化
354俄罗斯套娃信封LIS二维
410分割数组的最大值二分+DP
514自由之路状态压缩+字符串
741摘樱桃路径+状态

按公司分类

Google

  • 10, 72, 124, 300, 312, 329, 410

Meta/Facebook

  • 1143, 312, 410, 514, 741

Amazon

  • 300, 1143, 416, 494, 198

Microsoft

  • 72, 1143, 64, 96

核心套路总结

[!abstract] 面试常见模式 80% 的 DP 面试题可以用以下模板解决:

typescript
// 通用 DP 框架
function dpTemplate(dp, ...) {
  // 1. 确定状态 - 最后一步是什么?
  // 2. 转移方程 - dp[i] = ...
  // 3. 初始条件 - dp[0] = ...
  // 4. 计算顺序 - for i in range(n)

  // 空间优化(可选)
  // 滚动数组 / 一维降维
}

高频考点

考点出现频率
序列 LIS/LCS30%
背包DP25%
路径DP20%
股票DP15%
其他10%

参见: **DP算法索引** | **刷题指南**

Knowledge4J — Java 知识库