Sujet:
70. Monter des escaliers
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?
Remarque: étant donné n est un entier positif.
示例1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
Idée de résolution de problème:
La méthode pour grimper au nième ordre est la somme des méthodes pour grimper à l'ordre n-1 et à l'ordre n-2. Parce qu'après avoir grimpé à l'étape n-1, vous pouvez atteindre l'étape n en gravissant une autre étape. Après avoir grimpé à l'étape n-2, vous pouvez monter l'étape 2 à l'étape n à la fois, ou vous pouvez monter deux étapes 1 à l'étape n. Par conséquent, il est seulement nécessaire d'initialiser le nombre de méthodes pour monter à l'étape 1 et comment monter à l'étape 2, puis la méthode pour monter à l'étape n peut être dérivée.
Code:
class Solution:
def climbStairs(self, n: int) -> int:
first = 1
second = 2
num = 0
for i in range(2, n):
num = first + second
first = second
second = num
return max(n, num)
résultat de l'opération: