【题目描述】
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
【解题思路】
根据题目,有f(n) = f(n-1) + f(n-2) + … + f(1)。
此时当然可以用直接求和的方式去计算,然而,直接求和法的时间复杂度为O(n^2)。
由数学规律:
f(n) = f(n-1) + f(n-2) + … + f(1)。
f(n-1) = f(n-2) + … + f(1)。
所以,
f(n) = 2f(n-1)
这样一来,时间复杂度变为O(n)。用Python实现的代码如下:
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
a=[]
a.append(0)
a.append(1)
for i in range(2,number+1):
a.append(2*a[i-1])
return a[number]