题目链接:https://leetcode-cn.com/problems/n-th-tribonacci-number/
题目如下:
解一:空间复杂度为O(n)
class Solution {
public int tribonacci(int n) {
if(n==0) return 0;
if(n==1||n==2) return 1;
int[] num=new int[n+1];
num[0]=0;num[1]=1;num[2]=1;
if(n>2) {
for(int i=3;i<=n;i++)
num[i]=num[i-1]+num[i-2]+num[i-3];
}
return num[n];
}
}
解二:空间复杂度为O(1)
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,num=0;
for(int i=3;i<=n;i++){
num=a+b+c;
a=b;
b=c;
c=num;
}
return num;
}
}
解三:新增一个功能子类,直接返回值
class Fun{
int n=38;
public int[] num=new int[n];
Fun(){
num[0]=0;
num[1]=num[2]=1;
for(int i=3;i<n;i++)
num[i]=num[i-1]+num[i-2]+num[i-3];
}
}
class Solution {
public static Fun fun=new Fun();
public int tribonacci(int n) {
return fun.num[n];
}
}