如题意所示,类似求斐波那契数列
int
来表示tib(4) = tib(3) + tib(2) + tib(1)
和tib(5) = tib(4) + tib(3) + tib(2)
,两个都要计算tib(3)
,后面的情况类似,有大量重复计算效率低。实际上测试的话,在n = 34
的时候就会超出时间限制了class Solution {
public:
int tribonacci(int n) {
vector<int> tib(38);
tib[0] = 0;
tib[1] = 1;
tib[2] = 1;
for(int i=3;i<=37;i++) {
tib[i] = tib[i - 1] + tib[i - 2] + tib[i - 3];
}
return tib[n];
}
};
原文:https://www.cnblogs.com/MartinLwx/p/14276630.html