LeetCode70。階段を上る[Python]

問題

あなたが階段を上っているとしましょう。建物の最上部に到達するには、nステップかかります。
毎回1〜2歩登ることができます。建物の頂上に登るには、いくつの方法が必要ですか?

例1:

入力:2
出力:2
説明:建物の最上部に登るには2つの方法があります。(1次+1次)、(2次)

例2:

入力:3
出力:3
説明:建物の最上部に登るには3つの方法があります。(1次+1次+1次)、(1次+ 2次)、(2次+ 1次)

アイデア

フィボナッチ数列を使用して解きます。

(1)まず、n = 1とn = 2の2つの例外的な階段をリストする必要があります。
(2)n≥3の場合、n番目のはしごの階段を上る方法は2つの部分で構成されます。最初の部分はn-にあります。 1のはしごを1段上って、2番目の部分のn-2のはしごを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

おすすめ

転載: blog.csdn.net/qq_41709378/article/details/106744615