怎么做好网站找资源最好的是哪个软件
1137. 第 N 个泰波那契数 - 力扣(LeetCode)
1 题干部分
2 拆解
1 状态表示:dp[i]
2 状态转移方程:dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
3 初始化:让dp[0]=0,dp[1]=dp[2]=1
4 填表顺序:从dp[3]开始填从左往右填
5 返回值:dp[n]即为返回的数列Tn
3 思路及代码实现
class Solution {
public:public:int tribonacci(int n) {if(n==0) return 0;if(n==1||n==2) return 1;//建表vector<int> dp(n+1);//初始化dp[0]=0, dp[1]=dp[2]=1;//填表 for(int i=3;i<n+1;i++)dp[i]=dp[i-1]+dp[i-2]+dp[i-3];//返回return dp[n];}
};
4 空间优化
思路:
利用滚动数组来节省dp表的空间开销
创建四个变量,让其位于后面的三个数据向前不断滚动
代码实现:
class solution{
public:
int tribonacci(int n) {if(n==0) return 0;if(n==1||n==2) return 1;inint a=0,b=1,c=1,d=0;for(int i=3;i<n+1;i++){d=a+b+c;a=b,b=c,c=d; }return d;
};