假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是乙個正整數。
n=1時:只有1中方法爬到第1階。
n=2時:有2方法爬到第2階,1階+1階,或,2階。
n=3時:我們考慮爬到第3階之前的那步,只可能實在第1階或第2階,也就是爬到第3階的方法=第一階的方法+2,或,=第2階的方法+1.推廣可得:
爬到n的方法數f(n) = f(n-1) + f(n-2),顯然本題的本質是斐波那契數列。
用遞迴的解法:
class
solution
return
climbstairs
(n -1)
+climbstairs
(n -2);}}
但是此時由於遞迴對棧的大量使用,會導致時間複雜度非常高,故提交失敗
當遞迴解法超時時,自然而然應想到迴圈。**如下:
class
solution
int f1 =
1, f2 =
2, f3 =3;
for(
int i =
3; i <= n ; i++
)return f3;
}}
時間複雜度成功降到o(n)
力扣演算法題 070爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1....
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個台階,走法為...