前言
通过leetcode记录自己每天坚持刷题,以此监督自己的学习。不能放假了就懈怠😁
题目简介
题目传送地:剑指 Offer 10- I. 斐波那契数列
写一个函数,输入 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。
解析
没啥说的,就是用dp来简单线性动态规划就行了,用递归复杂度太高应该会超时
代码
class Solution:
def fib(self, n: int) -> int:
a=0
b=1
c=1
if n==1:
return b
if n==0:
return a
for i in range(n-2):
a=b
b=c
c=a+b
return c%1000000007