終於過了10天了!!!好開心我居然沒有忘記
今天的題目大意:有一個樓梯共有 n 階,你每步可以爬 1 階或 2 階,問有多少種不同的爬法到第 n 階?
(換句話說:求第 n 個 Fibonacci-like 數:f(n) = f(n-1) + f(n-2),base: f(0)=1、f(1)=1 或常見寫法 f(1)=1, f(2)=2。)
class Solution {
public int climbStairs(int n) {
if (n <= 1) return 1; // 0 或 1 階只有一種方法
int a = 1; // f(0) 或前一個狀態
int b = 1; // f(1) 或目前狀態
for (int i = 2; i <= n; i++) {
int next = a + b; // f(i) = f(i-1) + f(i-2)
a = b; // 向前移動:新的 f(i-2) = 原本 f(i-1)
b = next; // 新的 f(i-1) = f(i)
}
return b; // b 現在是 f(n)
}
}