iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0

是第70題
題目大意:你要爬一個有 n 階的樓梯,每次可以爬 1 階 或 2 階,那總共有多少種不同的方法可以爬到頂端。其實這題的本質就是 費波那契數列(Fibonacci),因為爬到第 n 階的方法數,等於爬到 n-1 階的方法數 + 爬到 n-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)
    }
}

上一篇
18天之LeetCode 202. Happy Number
下一篇
倒數10天!LeetCode 58. Length of Last Word
系列文
Chatting with ChatGPT——一天學習一題Leetcode20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言