LeetCode 70. 爬樓梯 [Python]

問題

假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?

示例 1:

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

示例 2:

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

思路

運用到斐波那契數列求解。

(1)首先,要列舉出兩個例外的樓梯,n=1,與n=2
(2)當n≥3時,第n階梯子的爬樓梯方法由兩部分組成,第一部分是在n-1的梯子上爬一個臺階,第二部分是在n-2的梯子上爬兩個臺階。所以有dp[n] = dp[n-1] + dp[n-2]。

代碼

class classname(object):
    def __init__(self):
        pass

    def climbStairs(self, n):
        if n == 1:
            return 1
        if n == 2:
            return 2
        first = 1; second = 2
        for i in range(n-2):
            temp = second
            second = first + second
            first = temp
        return second

if __name__ == '__main__':
    s = classname()
    r = s.climbStairs(35)
    print(r)
相關知識

學習鏈接:https://wenku.baidu.com/view/d680efcacd22bcd126fff705cc17552707225efe.htmls

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章