题目:斐波那契数列
解题思路:
1、直接使用递归的方法超时了,其中包含很多的重复运算;
2、使用动态规划
转移方程:dp[i+1] = dp[i]+dp[i-1]
初始状态:dp[0] = 0; dp[1]=1;
因为每项只和后两项有关,所以使用两个变量,交替前进,空间复杂度降为O(1);
/**
* @Auther: ylei
* @Date: 2021-06-16 15:32
* @Description: 斐波那契数列
*/
public class Fib {
public int fib(int n) {
if(n==0)return 0;
if(n==1)return 1;
int p = 0;
int q = 1;
int mid;
for(int i=2;i<=n;i++){
mid = q;
q = (q+p)%1000000007;
p = mid;
}
return q;
}
}