泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n
,请返回第 n 个泰波那契数 Tn 的值。
法一:
class Solution {
public int tribonacci(int n) {
int[] dp = new int[50];
dp[0]=0;
dp[1]=1;
dp[2]=1;
for(int i=3;i<=n;i++){
dp[i] = dp[i-1]+dp[i-2]+dp[i-3];
}
return dp[n];
}
}
运行结果:
法二:
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;
}
}
运行结果:
相比于法1,法2在空间上更节省,没有创建数组来保存大量数据,而是通过四个变量保存数据,更加节省空间。