題目:一只青蛙一次可以跳上1級臺階缔恳,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法障癌。
思路:青蛙跳n級臺階的跳法相當(dāng)于青蛙跳青蛙跳n-1級臺階后再跳1級意荤,或者青蛙跳n-2級臺階后再跳2級,因此 f(x) = f(x-1) + f(x-2) , n>=2,當(dāng)n<2時的情況易得刘绣。
Python代碼如下:
class Solution:
def jumpFloor(self, number):
dp = [0, 1, 2]
for i in range(3, number+1):
dp.append(dp[i-1]+dp[i-2])
return dp[number]
def jumpFloor2(self, number):
# 空間復(fù)雜度O(1)
dp = [0, 1, 2]
if number<=2:
return dp[number]
left = 1
right = 2
for i in range(3, number+1):
mid = right
right = left + right
left = mid
return right