LeetCode 1137. 第 N 个泰波那契数(动态规划)
<p>本文讲解 LeetCode 第 1137 题「第 N 个泰波那契数」,递推公式为 dp(i)=dp(i-1)+dp(i-2)+dp(i-3)。使用一维数组保存前三项结果进行动态规划求解,时间复杂度 O(n)、空间复杂度 O(n),并附完整 Java 代码。</p>
<p>本文讲解 LeetCode 第 1137 题「第 N 个泰波那契数」,递推公式为 dp(i)=dp(i-1)+dp(i-2)+dp(i-3)。使用一维数组保存前三项结果进行动态规划求解,时间复杂度 O(n)、空间复杂度 O(n),并附完整 Java 代码。</p>
<p>本文讲解 LeetCode 第 198 题「打家劫舍」,在不能偷相邻两间房的约束下求最高金额。定义 dp(i) 表示前 i 间房可偷的最高金额,递推式 dp(i)=max(dp(i-1), dp(i-2)+nums[i]),时间复杂度 O(n),并附 Java 实现。</p>
<p>本文讲解 LeetCode 第 62 题「不同路径」,计算机器人从左上角到右下角只能向右或向下走的路径数。给出二维动态规划、朴素递归与记忆化递归三种实现,递推式 dp[i][j]=dp[i-1][j]+dp[i][j-1],附 Java 代码。</p>
<p>本文讲解 LeetCode 第 746 题「使用最小花费爬楼梯」,每次可爬一或两阶并支付对应费用,求到达顶部的最小花费。定义 dp(i) 表示到达第 i 阶的最小费用,递推式 dp(i)=min(dp(i-1),dp(i-2))+cost[i],时间复杂度 O(n)。</p>
<p>讲解线性动态规划的定义与解题思路,以AcWing数字三角形等模板题为例分析状态定义、初始化与转移方程,总结从上至下和从下至上两种递推方式及滚动数组优化技巧。</p>