力扣1137题:动态规划解泰波那契数 高效求解第N项的秘密

一:重新解读题目
泰波那契数列是一个充满数学趣味的递推序列:从第3项开始,每个数均为前三个数的和(即Tₙ₊₃ = Tₙ + Tₙ₊₁ + Tₙ₊₂)。当给定整数n时,需要高效计算出第n项的值。面对此类递推问题,传统的递归方法可能因重复计算导致效率低下,因此动态规划成为破解的关键。
二:解题思路与过程
动态规划的核心在于“以空间换时间”:通过存储已计算出的中间结果,避免重复递归。代码中首先初始化数组dp,前3项分别赋值0、1、1(符合数列定义)。随后从第4项开始循环,每次通过dp[i] = dp[i-1] + dp[i-2] + dp[i-3]更新当前值,直至计算出第n项。此过程严格遵循递推公式,且因数组的有序访问,时间复杂度降至O(n),远优于递归的指数级复杂度。
三:带注释的代码解析
class Solution {
public:
int tribonacci(int n) {
// 创建固定长度数组(因题目n≤37,故无需动态分配)
int dp[38];
// 初始化前3项(边界条件)
dp[0] = 0;
dp[1] = 1;
dp[2] = 1;
// 从第3项开始递推计算
for (int i = 3; i <= n; i++) {
// 利用数组直接访问历史值,完成三步求和
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}
// 返回目标项的结果
return dp[n];
}
};原创内容 转载请注明出处






