[LeetCode]初級アルゴリズム-ダイナミックプランニング-階段を登る
886 ワード
階段を登る
階段を登っているとします.屋上に着くにはn歩かかります.
毎回1つか2つの階段を登ることができます.屋上に登る方法はいくつありますか?
注:指定されたnは正の整数です.
例1:
例2:
再帰を採用し、運行時間が長すぎますが、書くのは簡単です.
効率的に実行するために反復(フィボナッチ数列と同様)を採用
階段を登っているとします.屋上に着くにはn歩かかります.
毎回1つか2つの階段を登ることができます.屋上に登る方法はいくつありますか?
注:指定されたnは正の整数です.
例1:
: 2
: 2
: 。
1. 1 + 1
2. 2
例2:
: 3
: 3
: 。
1. 1 + 1 + 1
2. 1 + 2
3. 2 + 1
再帰を採用し、運行時間が長すぎますが、書くのは簡単です.
public static int climbStair(int n) {
if(n==1||n==0){
return 1;
}
return climbStair(n-1)+climbStair(n-2);
}
効率的に実行するために反復(フィボナッチ数列と同様)を採用
public int climbStairs2(int n) {
int[] result=new int[n];
if(n==1){
return 1;
}
result[0]=1;
result[1]=2;
for(int i=2;i