力扣leetcode-cn.com
題目描述:
假設你正在爬樓梯。需要 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 階
與青蛙跳台階類似
方法1:
分析:動態規劃
本問題其實常規解法可以分成多個子問題,爬第n階樓梯的方法數量,等於 2 部分之和
所以我們得到公式
同時需要初始化
和 時間複雜度:
class solution(object):
def climbstairs(self,n):
"""動態規劃"""
dp = [1,2]
for i in range(2,n):
return dp[n-1]
方法2:
斐波那契數列
分析:同理當等於n的時候,總共有f(n)=f(n-1)+f(n-2)(這裡n>2)種跳法。
就是斐波那契數列:1,1,2,3,5,。。。
class solution(object):
def climbstairs(self,n):
"""斐波那契數列"""
a=1b=1
for i in range(1,n):
a,b = b,a+b
return b
or
class solution(object):
def climbstairs(self,n):
"""斐波那契數列"""
a=0b=1
for i in range(n):
a,b = b,a+b
return b
第一次編輯(2020.7.10)
參考:
動態規劃走樓梯
main.cpp 動態規劃走樓梯 created by liujan on 11 18 14.問題描述 乙個樓梯有20級,每次走1級或2級,從底走到 頂一共有多少種走法?分析 假設從底走到第n級的走法有f n 種,走到第n級 有兩個方法,乙個是從第 n 1 級走1步,另乙個是從第 n 2 級走2步,...
動態規劃走樓梯 Leetcode 70 爬樓梯
從本題中我們可以學到包含重複子問題,可以採用記憶化的方式,復用計算後的值 並用動態規劃的思想,找到動態轉移方程,採用迴圈實現。題目描述 題目 假設我們需要爬乙個樓梯,這個樓梯一共有 n 階,可以一步跨越 1 個或者 2 個台階,那麼爬完樓梯一共有多少種方式?示例 輸入 2 輸出 2 有2種方式可以爬...
動態規劃走樓梯 室內樓梯款式大全
樓梯樣式普遍的有直梯 折梯 旋梯等。安全性為主的家中,能夠選擇直梯 折梯等傳統式構造,樓梯正下方空間樣子標準可作收納整理之作 考慮到裝飾藝術 時尚潮流感的家中則能夠選擇轉動樓梯,梯步還可以應用更美觀大方的夾層玻璃梯步。下面詳解一下。1.螺旋狀 180度的螺旋狀樓梯是一種能真實節約空間的樓梯修建方法,...