python爬樓梯演算法 爬樓梯(Python3)

2021-10-11 15:07:55 字數 774 閱讀 9559

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是乙個正整數。

示例 1:

輸入: 2

輸出: 2

解釋: 有兩種方法可以爬到樓頂。1 階 + 1 階 和 2 階

解題思路:

實現了兩種方法,但是第一種超出時間限制(。ì _ í。),因為遞迴的時候方法實際計算了兩次。兩種方法都使用了動態規劃思想,比如對於爬10階樓梯,我們最後一步爬上第10階只會有兩種情況,一種是從9階樓梯爬1個台階,一種是從8階台階爬2兩個台階上來。所以10階台階問題可以劃分為爬9階和8階兩個子問題,一直遞迴劃分到只剩2階(2種方法)和1階(一種方法)。

超出時間限制的**:

class solution:

def climbstairs(self, n: int) -> int:

if n<=2:

if n==2:

return 2

else:

return 1

else:

return self.climbstairs(n-1)+self.climbstairs(n-2)

第二種方法(沒有重複計算):

class solution:

def climbstairs(self, n: int) -> int:

m = [0,1,2]

for i in range(3,n+1):

return m[n]

時間與空間複雜度如下:

python爬樓梯遞迴 爬樓梯(Python3)

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 和 2 階 解題思路 實現了兩種方法,但是第一種超出時間限制 因為遞迴的時候方...

爬樓梯演算法

有n階樓梯,有1,2,3 走m步走完樓梯,一共有多少種走法,並輸出所有的走法 設走n階台階的走法數為 f n 可以得到 f 1 1 f 2 2 f 3 4 對於n 3時,縮小問題規模 最後一步上乙個台階的話,之前上了n 1個台階,走法為f n 1 最後一步上兩個台階的話,之前上了n 2個台階,走法為...

爬樓梯 python Python3爬樓梯演算法示例

假設你正在爬樓梯。需要 n 步你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。方案一 每一步都是前兩步和前一步的和 class solution object def climbstairs self,n type n int rt...