leetcode刷題之旅 70 爬樓梯

2021-10-23 19:26:00 字數 765 閱讀 2151

題目鏈結

這題其實是典型的fibonacci問題,每次爬樓梯都只能爬一層或爬兩層,那麼我們要是想上第n層就只能從第n-1層上一層,或者從第n-2層上兩層,同樣的要上第n-1層和第n-2都有兩種解法。那麼我們就可以得到通項:f(n) = f(n-1) + f(n-2),n代表層數且n要大於3。

同時題目約定了給出的n是大等於1的所以可以不用考慮非正數的情況。

public

intclimbstairs

(int n)

public

intrecursion

(int n)

這個是很簡單的遞迴,就不解釋了。

public

intclimbstairs

(int n)

return f3;

}

其實在計算機底層中遞迴和迴圈的**段都是類似的,都是對同一**段的復用。但遞迴每次執行的時候會產生新的區域性變數,占用記憶體空間。而且有的**會進行數次遞迴大大增加了程式執行時間。

要推斷也很簡單:f(n + 1) = f(n) + f(n-1) f(n) = f(n + 1) - f(n-1)

leetcode官方還提供了另外兩種解法,一種是矩陣解法,另外一種是通項公式解法。這兩種解法更偏向於數學求解,大家有興趣可以到leetcode中國站來檢視詳細過程。

LeetCode刷題 70 爬樓梯

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階 示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1...

leetcode刷題 70爬樓梯

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。最開始使用的是回溯的方法,但是時間效率地下沒有通過,於是想到了動態規劃的演算法。對於i樓梯,到達其的方法有從i 1跨一步和i 2跨兩步,因此到底i的方法就...

LeetCode刷題之旅 滑動視窗例題

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...