假設你正在爬樓梯。需要 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 階 解題思路 實現了兩種方法,但是第一種超出時間限制 因為遞迴的時候方...
爬樓梯(遞迴)
4017 爬樓梯描述 樹老師爬樓梯,他可以每次走1級或者2級,輸入樓梯的級數,求不同的走法數。例如 樓梯一共有3級,他可以每次都走一級,或者第一次走一級,第二次走兩級也可以第一次走兩級,第二次走一級,一共3種方法。輸入輸入包含若干行,每行包含乙個正整數n,代表樓梯級數,1 n 30 輸出不同的走法數...
爬樓梯 遞迴
題目要求 乙個人爬樓梯,每次可以走一級或者兩級,輸入樓梯級數,求不同的走法數。輸入輸出格式 輸入包含若干行,每行包含乙個正整數n n 30 代表樓梯級數,輸出對應的走法數,每個一行。樣例輸入 58 10樣例輸出 834 89分析 用遞迴將問題分解為規模更小的子問題進行求解。n級台階的走法數 第一步走...