動態規劃走樓梯 leetcode 70 爬樓梯

2021-10-16 11:03:55 字數 1364 閱讀 2132

力扣​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度的螺旋狀樓梯是一種能真實節約空間的樓梯修建方法,...