题目
代码
执行用时:52 ms, 在所有 Python3 提交中击败了8.28% 的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了38.83% 的用户
通过测试用例:51 / 51
class Solution:
def fib(self, n: int) -> int:
F=[0,1]
for i in range(2,n+1):
F.append((F[i-1]+F[i-2])%1000000007)
return F[n]
【方法2】
执行用时:28 ms, 在所有 Python3 提交中击败了92.14% 的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了15.94% 的用户
通过测试用例:51 / 51
class Solution:
def fib(self, n: int) -> int:
pre,now=0,1
for i in range(2,n+1):
presave=pre
pre,now=now,now+presave
now%=1000000007
pre%=1000000007
return now if n else 0
【方法3】快速幂
执行用时:40 ms, 在所有 Python3 提交中击败了22.52% 的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了29.57% 的用户
通过测试用例:51 / 51
class Solution:
def fib(self, n: int) -> int:
def cal(matrix_a,matrix_b):
ans=[[0,0],[0,0]]
for i in range(2):
for j in range(2):
ans[i][j]=(matrix_a[i][0]*matrix_b[0][j]+matrix_a[i][1]*matrix_b[1][j])%1000000007
return ans
matrix_a=[[1,1],[1,0]]
res=[[1,0],[0,1]]
for i in range(n-1):
res=cal(matrix_a,res)
return res[0][0] if n else 0