leetcode
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
思路:
假设跳上n-1个台阶的方法有f(n-1)种,那么跳n个台阶的方法有f(n-1)+f(n-2)种,即先跳n-2个台阶,最后跳2级和先跳n-1个台阶,最后跳一级
f(0)=0 f(1)=1 f(2) = 2…f(n) = f(n-1)+f(n-2)
是一个斐波那契数列
class Solution:
def numWays(self, n: int) -> int:
if n==0:
return 1
if n <3:
return n
x = 1
y = 1
res = 0
for i in range(1,n):
res = x +y
x = y
y = res
return res %1000000007