欢迎光临散文网 会员登陆 & 注册

算法:斐波那契数列

2022-05-31 10:41 作者:做架构师不做框架师  | 我要投稿


斐波那契数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:

F(0) = 0, F(1) = 1

F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例

  • 输入:n = 2

  • 输出:1

提示

0 <= n <= 100

方法:动态规划

由于斐波那契数存在递推关系,因此可以使用动态规划求解。动态规划的状态转移方程即为上述递推关系,边界条件为 F(0) 和 F(1)。

举例说明:

F(2) = F(1) + F(0) = 1

F(3) = F(2) + F(1) = 2

F(4) = F(3) + F(2) = 3

F(5) = F(4) + F(3) = 5

由于 n 只有第 n-1 n-2 项有关系,所以只需要初始化三个整型变量 pq r,然后用使 p q 交替前进,最后,p q 的和取模1e9+7 即可。

代码如下:

复杂度分析

  • 时间复杂度:O(n)。

  • 空间复杂度:O(1)。

写在最后

本文内容出处是力扣官网,希望和大家一起刷算法,在后面的路上不变秃但是变强!

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。


算法:斐波那契数列的评论 (共 条)

分享到微博请遵守国家法律