LeetCode 70. Monter les escaliers [Python]

problème

Supposons que vous montiez des escaliers. Il faut n pas pour atteindre le sommet du bâtiment.
Vous pouvez monter 1 ou 2 marches à chaque fois. De combien de manières différentes avez-vous pour grimper au sommet d'un bâtiment?

Exemple 1:

Entrée: 2
Sortie: 2
Explication: Il existe deux façons de monter au sommet du bâtiment. (1er ordre + 1er ordre), (2e ordre)

Exemple 2:

Entrée: 3
Sortie: 3
Explication: Il existe trois façons de monter au sommet du bâtiment. (1er ordre + 1er ordre + 1er ordre), (1er ordre + 2e ordre), (2e ordre + 1er ordre)

Idées

Utilisez la séquence de Fibonacci pour résoudre.

(1) Tout d'abord, nous devons lister deux escaliers exceptionnels, n = 1 et n = 2.
(2) Lorsque n≥3, la méthode de montée des escaliers pour la nième échelle se compose de deux parties. La première partie est en n- Montez une marche sur l'échelle de 1 et montez deux marches sur l'échelle de n-2 dans la deuxième partie. Donc dp [n] = dp [n-1] + dp [n-2].

Code

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)
informations connexes

Lien d'apprentissage: https://wenku.baidu.com/view/d680efcacd22bcd126fff705cc17552707225efe.htmls

Je suppose que tu aimes

Origine blog.csdn.net/qq_41709378/article/details/106744615
conseillé
Classement