leetCode 動的プログラミングの質問

70. 階段を上る

あなたが階段を上っているとします。n 建物の上に上がるには階段が必要です 。

1 登ったり 2 一歩踏み出すたびに 。建物の最上階に行く方法は何通りありますか?

class Solution {
    public int climbStairs(int n) {

        //f(n) = f(n - 1) + f(n -2)
        int p = 0, q = 0, r = 1;
        for (int i = 1; i <= n; ++i) {
            p = q;
            q = r;
            r = p + q;
        }
        return r;
    }
}

時間計算量: ループは n 回実行され、毎回一定の時間コストがかかるため、漸近的な時間計算量は O(n) です。

空間の複雑さ: ここでは定数変数のみが補助空間として使用されるため、漸近的な空間の複雑さは O(1) です。

おすすめ

転載: blog.csdn.net/zhangying1994/article/details/128907104