假設你正在爬樓梯。需要 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 階
將所有可能爬的台階的方式進行組合,以 n = 5 為例:
該演算法的執行時間達到了指數級別,不推薦。
方法二:動態規劃
到達第 i 個台階有幾種方法?
方法一:從第 i - 1 個台階上爬 1 個台階上去。
方法二:從第 i - 2 個台階上爬 2 個台階上去。
因此 dp[i] = dp[i-1] + dp[i-2]. 即爬到第 i 個台階的方法總數為爬到第 i - 1 個台階和第 i - 2 個台階的方法和。
到這裡,就可以發現,其數值滿足斐波那契數列,為了節省空間,我們不使用陣列,而使用兩個變數進行儲存。
**:
class
solution
return g;}}
;
leetcode刷題(58) 70 爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 2 階示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1 階 1 ...
LeetCode刷題 70 爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階 示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1...
leetcode刷題 70爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。最開始使用的是回溯的方法,但是時間效率地下沒有通過,於是想到了動態規劃的演算法。對於i樓梯,到達其的方法有從i 1跨一步和i 2跨兩步,因此到底i的方法就...