LeetCode irregulares título cepillo --Climbing Escaleras

Subiendo escaleras

Usted está subiendo una escalera. Se necesita n pasos para llegar a la cima.

Cada vez que se puede subir 1 o 2 pasos. ¿De cuántas maneras distintas se puede subir a la cima?

Nota: Dado n será un número entero positivo.

Ejemplo 1:

Input: 2
Output:  2
Explanation:  There are two ways to climb to the top.

1. 1 step + 1 step
2. 2 steps

Ejemplo 2:

Input: 3
Output:  3
Explanation:  There are three ways to climb to the top.

1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step

Podemos ver examinado este problema en realidad es similar al problema de Fibonacci, Fn = Fn-1 + Fn-2, ya que el último paso 1 no es 2, por lo que este problema puede ser dividido en dos problemas: pobres dos pasos para llegar al destino y cuantos más problemas destino de paso, a continuación, puede continuar por la descomposición.

class Solution {
    public int climbStairs(int n) {
        if(n==0||n==1||n==2){
        return n;
        }
        int oneStep=1;
        int twoStep=2;
        int sumStep=0;
        for(int i=2;i<n;i++){
            sumStep=oneStep+twoStep;
            oneStep=twoStep;
            twoStep=sumStep;
        }
        return sumStep;
    }
}
Publicados 173 artículos originales · ganado elogios 110 · Vistas de 100.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_35564813/article/details/104737084
Recomendado
Clasificación