剑指offer面试题09-2----跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路:青蛙跳n级台阶的跳法相当于青蛙跳青蛙跳n-1级台阶后再跳1级,或者青蛙跳n-2级台阶后再跳2级,因此 f(x) = f(x-1) + f(x-2) , n>=2,当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):
        # 空间复杂度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

推荐阅读更多精彩内容