LeetCode简单题之爬楼梯
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之爬楼梯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?
示例 1:
輸入:n = 2
輸出:2
解釋:有兩種方法可以爬到樓頂。
- 1 階 + 1 階
- 2 階
示例 2:
輸入:n = 3
輸出:3
解釋:有三種方法可以爬到樓頂。 - 1 階 + 1 階 + 1 階
- 1 階 + 2 階
- 2 階 + 1 階
提示:
1 <= n <= 45
來源:力扣(LeetCode)
解題思路
??假設當前你已經到達第n層,那么你可能是由第n-1層跳過來也可能是從第n-2層跳過來,但是不管從哪層跳過來都需要計入總數,因為題目記錄的是有幾種方法。故有f(n)=f(n-1)+f(n-2)
class Solution:def climbStairs(self, n: int) -> int:if n==1:return 1if n==2:return 2return self.climbStairs(n-1)+self.climbStairs(n-2)
??實際上跳上當前臺階的方法種數只和前面兩種情況相關,所以不需要像上面一樣將很多的數據壓入棧中,只需要保存最近的兩次情況結果即可。
class Solution:def climbStairs(self, n: int) -> int:p,q,r=0,0,1for i in range(n):p,q=q,rr=p+qreturn r
總結
以上是生活随笔為你收集整理的LeetCode简单题之爬楼梯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之公平的糖果交换
- 下一篇: LeetCode简单题之数组中的字符串匹