階段を上る
あなたは階段のケースを登っています。それはとりnはトップに到達するための手順を。
たびに1つのまたは2のいずれかのステップを登ることができます。あなたが一番上に登ることができますどのように多くの異なる方法で?
注:与えられたnは正の整数になります。
例1:
Input: 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
例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
宛先に到達するために貧しい二つのステップ:最後のステップ1は2ではないので、この問題は二つの問題に分けることができますので、私たちは、FN = FN-1 + FN-2、実際にフィボナッチの問題に似ていますこの問題を見て、見ることができますそして先より多くのステップの問題、あなたは分解をダウンし続けることができます。
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;
}
}