描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
逆向思维,倒数第二次和最后一次有两种情况,跳一次,跳两次,同理,倒数第二次和倒数第三次也有两种,有f(n)=f(n-1)+f(n+1),符合斐波那契数列。唯一的区别是,跳台阶是从1, 2开始的,而不是0, 1。
代码:
class Solution:
def jumpFloor(self, number):
# write code here
a, b = 1, 2
if number == 1:
return 1
elif number == 2:
return 2
else:
count = 2
while count < number:
a, b = b, a + b
count += 1
return b
结果:
运行时间:30ms
占用内存:5624k