演算法 力扣 070 爬樓梯

2021-10-06 13:45:04 字數 849 閱讀 9763

假設你正在爬樓梯。需要 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個台階,走法為...