1.題目

描述

一隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個 n 級的台階總共有多少種跳法(先後次序不同算不同的結果)。

數據範圍:1 ≤n≤40

要求:時間複雜度:O(n) ,空間複雜度: O(1)

示例1

輸入:

2

返回值:

2

説明:

青蛙要跳上兩級台階有兩種跳法,分別是:先跳一級,再跳一級或者直接跳兩級。因此答案為2

示例2

輸入:

7

返回值:

21

2. 題解思路

本題的關鍵是套用動態規劃的模板,對問題進行拆解。

具體思路是:

可視化圖解算法73:跳台階(爬樓梯)_力扣

如果文字描述的不太清楚,你可以參考視頻的詳細講解:B站@好易學數據結構

3.編碼實現

核心代碼:

func jumpFloor(number int) int {
    if number == 1 {
        return 1
    }
    //1.定義狀態.   i:第i個台階; dp[i]:跳到第i個台階的跳法
    dp := make([]int, number+1)
    //2.初始化邊界條件:    dp[1]=1,即第一個台階只有1種跳法;dp[2]=2,即第二個台階有2種跳法;
    dp[1] = 1
    dp[2] = 2
    //3.確定遞推公式: dp[i]=dp[i-1]+dp[i-2]
    for i := 3; i <= number; i++ {
        //到第i個台階有2種方法:從第 i-1跳上來,或者從第 i-2跳上來
        dp[i] = dp[i-1] + dp[i-2]
    }
    //4.輸出結果
    return dp[number]
}

具體完整代碼你可以參考下面視頻的詳細講解。

  • Python編碼:B站@好易學數據結構
  • Java編碼:B站@好易學數據結構
  • Golang編碼:B站@好易學數據結構

4.總結

本題是動態規劃的經典題目,重點在於理解動態規劃的解題思路。對於第i個台階,只能從i-1或者i-2個台階跳上來,因此遞推公式是:dp[i] = dp[i - 1] + dp[i - 2]。

可視化圖解算法73:跳台階(爬樓梯)_Leetcode_02

《數據結構與算法》深度精講課程正式上線啦!7 大核心算法模塊全解析:

  ✅   鏈表

  ✅   二叉樹

  ✅   二分查找、排序

  ✅   堆、棧、隊列

  ✅   回溯算法

  ✅   哈希算法

  ✅   動態規劃

無論你是備戰筆試面試、提升代碼效率,還是突破技術瓶頸,這套課程都將為你構建紮實的算法思維底座。🔥立即加入學習打卡,與千名開發者共同進階!

  • Python編碼實現:B站@好易學數據結構
  • Java編碼實現:B站@好易學數據結構
  • Golang編碼實現:B站@好易學數據結構

對於LeetCode數據結構與算法,我們總結了一套【可視化+圖解】方法,依據此方法來解決相關問題,算法變得易於理解,寫出來的代碼可讀性高也不容易出錯。具體也可以參考視頻詳細講解。

今日佳句:燕趙多佳人,美者顏如玉。