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;
}
}