爬樓梯

題目描述

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是一個正整數。

示例 1:

輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1.  1 階 + 1 階
2.  2 階

示例 2:

輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1.  1 階 + 1 階 + 1 階
2.  1 階 + 2 階
3.  2 階 + 1 階

觀察,1階1種,2階2種,3階3種,4階5種,正好是斐波那契數列。第一次用遞歸超時

class Solution:
    def climbStairs(self, n):
        # step = 0
        # if n == 0 or n == 1:
        #     return 1
        # else:
        #     step = self.climbStairs(n-1) + self.climbStairs(n-2)
        # return step

        a, b, c = 1, 2, 3
        if n == 1 or n == 2:
            return n
        while c <= n:
            step = a + b
            a = b
            b = step
            c += 1
        return step
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章