每日刷題 爬樓梯

2021-09-27 08:10:11 字數 725 閱讀 5618

假設你正在爬樓梯。需要 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的方法就...