あなたが階段を上っているとします。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) です。