LeetCode 70 爬樓梯
阿新 • • 發佈:2020-12-24
假設你正在爬樓梯。需要n階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定n是一個正整數。
示例 1:
輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1. 1 階 + 1 階
2. 2 階
示例 2:
輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1. 1 階 + 1 階 + 1 階
2. 1 階 + 2 階
3. 2 階 + 1 階
解題思路:
我們用 f(x) 表示爬到第 x 級臺階的方案數,考慮最後一步可能跨了一級臺階,也可能跨了兩級臺階,所以我們可以列出如下式子:
f(x) = f(x - 1) + f(x - 2)
它意味著爬到第 x 級臺階的方案數是爬到第 x - 1 級臺階的方案數和爬到第 x - 2 級臺階的方案數的和。很好理解,因為每次只能爬 1 級或 2 級,所以 f(x) 只能從 f(x - 1) 和 f(x - 2) 轉移過來,而這裡要統計方案總數,我們就需要對這兩項的貢獻求和。
以上是動態規劃的轉移方程,下面我們來討論邊界條件。我們是從第 0 級開始爬的,所以從第0 級爬到第 0 級我們可以看作只有一種方案,即 f(0) = 1;從第 0級到第 1級也只有一種方案,即爬一級,f(1) = 1。