题目:斐波那契数列
解题思路:
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;
}
}
本文介绍了如何使用动态规划解决斐波那契数列问题,通过避免重复计算降低空间复杂度至O(1),重点讲解了转移方程和实现代码。
443

被折叠的 条评论
为什么被折叠?



