题目链接:https://leetcode.cn/problems/n-th-tribonacci-number/description/
cpp
class Solution {
public:
int tribonacci(int n)
{
/*时空复杂度都是O(n)*/
// 处理边界情况
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
// 1.创建 dp 表
vector<int> dp(n + 1);
// 2.初始化
dp[0] = 0, dp[1] = dp[2] = 1;
// 3.填表
for (int i = 3; i < n + 1; ++i)
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
// 4.返回值
return dp[n];
}
};
cpp
class Solution {
public:
int tribonacci(int n) {
// 处理边界情况
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
int a = 0, b = 1, c = 1, d = 0;
for (int i = 3; i <= n; ++i)
{
d = a + b + c;
// 滚动操作
a = b; b = c; c = d;
}
return d;
}
};