原题链接
公式推导:
f(n)=f(n-1)+f(n-2)+…+f(1)
f(n-1)=f(n-2)+…f(1)
得:f(n)=2*f(n-1)
1.递归法
class Solution:
def jumpFloorII(self, number):
# write code here
if number==0 or number==1:
return 1
return self.jumpFloorII(number-1)*2
2.使用列表
class Solution:
def jumpFloorII(self, number):
# write code here
list_number=[1]
if number==1:
return 1
for i in range(1,number):
list_number.append(2*list_number[-1])
return list_number[-1]
时间复杂度:O(n)
空间复杂度:O(n)
3.动态规划
class Solution:
def jumpFloorII(self, number):
# write code here
p=1
if number==1:
return 1
for i in range(1,number):
q=2*p
p=q
return q