LeetCode-70-Climbing Stairs(ダイナミックプランニング)-EAsy

614 ワード

1.題意理解
毎回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;
    }
}