描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:【斐波那契变形】
如果青蛙当前在第n级台阶上,那它上一步是在哪里呢?
显然,由于它可以跳1级台阶或者2级台阶,所以它上一步必定在第n-1,或者第n-2级台阶,也就是说它跳上n级台阶的跳法数是跳上n-1和跳上n-2级台阶的跳法数之和。
方一:时间复杂度为 O(n)
class Solution:
def jumpFloor(self, number):
# write code here
if number == 1 or number == 2:
return number
else:
f1=1
f2=2
for i in range(3,number+1):
sum=f1+f2
f1,f2=f2,sum
return sum
方二:面试别写型递推版实现,时间复杂度 O(2^n),运行时间过长,通过率15/19
class Solution:
def jumpFloor(self, number):
# write code here
if number==1:
return 1
elif number==2:
return 2
else:
return self.jumpFloor(number-1)+self.jumpFloor(number-2)