题目描述:
题解:动态规划
最开始用递归的方法超时。
1.fibres保存斐波那契数列的值,fibres[0]=0 fibres[1]=1
2.对i从2到n分别根据公式计算fibres[i]
3.对fibres[n]结果根据要求取模。
class Solution(object): def fib(self, n): fibres = [] fibres.append(0) fibres.append(1) for i in range(2,n+1): fibres.append(fibres[i-1]+fibres[i-2]) if fibres[n]>1000000007: fibres[n] = fibres[n]%1000000007 return fibres[n]
尝试java版:
class Solution { public int fib(int n) { if(n==0){ return 0; } int [] fibres = new int[n+1]; fibres[0] = 0; fibres[1] = 1; for(int i=2;i<n+1;i++){ fibres[i] = (fibres[i-1]+fibres[i-2])%1000000007; } return fibres[n]; } }
好像java取模必须放在for循环每次的计算中,否则结果会出错。