題目描述:爬 n 階樓梯,每次可以走 1 步或 2 步,共有幾種不同的走法?
解題思路:到第 n 階的方法數 = 從第 n-1 階走一步 + 從第 n-2 階走兩步,即 f(n) = f(n-1) + f(n-2),與費波那契數列完全相同。只需維護前兩個狀態,不需要完整 DP 陣列,O(1) 空間即可解決。
時間複雜度:O(n) — 一次線性迭代。
空間複雜度:O(1) — 只保留前兩個狀態。
1. If n <= 2: return n 2. Set prev2 = 1 (ways to reach step 1), prev1 = 2 (ways to reach step 2) 3. For i from 3 to n: a. curr = prev1 + prev2 b. prev2 = prev1; prev1 = curr 4. Return prev1
遞迴無記憶 O(2^n):遞迴 climb(n-1) + climb(n-2),重複計算。
矩陣快速冪 O(log n):將轉移矩陣快速冪化以獲得 O(log n) — 實現複雜,常數大。