題目
假設(shè)你正在爬樓梯换团。需要 n 階你才能到達(dá)樓頂第步。
每次你可以爬 1 或 2 個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢阅虫?
注意:給定 n 是一個(gè)正整數(shù)。
示例 1:
輸入: 2
輸出: 2
解釋?zhuān)?有兩種方法可以爬到樓頂不跟。
- 1 階 + 1 階
- 2 階
示例 2:
輸入: 3
輸出: 3
解釋?zhuān)?有三種方法可以爬到樓頂颓帝。
- 1 階 + 1 階 + 1 階
- 1 階 + 2 階
- 2 階 + 1 階
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/climbing-stairs
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)窝革,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處购城。
解題思路
我們可以從數(shù)字中發(fā)現(xiàn)這是一個(gè)Fibonacci數(shù)列,因?yàn)檫f歸的時(shí)間太長(zhǎng)虐译,這里使用了循環(huán)的方法進(jìn)行計(jì)算
代碼
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
pre = 0
curr = 1
for i in range(n):
temp = curr
curr = curr + pre
pre = temp
return curr