LeetCode-70-Climbing Stairs(ダイナミックプランニング)-EAsy
614 ワード
1.題意理解
毎回1つの階段や2つの階段を上ることができますが、nつの階段を上るには、何種類の歩き方がありますか?
2.テーマ分析:
1.動的計画;
2.再帰メソッドを使用するとタイムアウトします:climbStairs(n)=climbStairs(n-1)+climbStairs(n-2);
3.非再帰方式で実現する(ゲージは計算結果をよく使う);
解題コード:
毎回1つの階段や2つの階段を上ることができますが、nつの階段を上るには、何種類の歩き方がありますか?
2.テーマ分析:
1.動的計画;
2.再帰メソッドを使用するとタイムアウトします:climbStairs(n)=climbStairs(n-1)+climbStairs(n-2);
3.非再帰方式で実現する(ゲージは計算結果をよく使う);
解題コード:
public class Solution {
public int climbStairs(int n) {
if(n==0 || n==1){
return n;
}
int preOneStep=1;
int preTwoStep=1;
int cur=2;
for(int i=2; i<=n; i++){
cur=preOneStep+preTwoStep;
preTwoStep=preOneStep;
preOneStep=cur;
}
return cur;
}
}