劍指 Offer 10 II 青蛙跳台階問題

2021-10-11 21:44:47 字數 1090 閱讀 2947

劍指 offer 10- ii. 青蛙跳台階問題

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

示例 1:

輸入:n = 2

輸出:2

示例 2:

輸入:n = 7

輸出:21

示例 3:

輸入:n = 0

輸出:1

趁熱打鐵,解決了斐波那契數列,我們看看這只小?

其實,這也是乙個斐波那契數列問題,只是之前的題目直接告訴你是斐波那契數列,資料之間的關係明確的告訴了你,而青蛙跳台階問題沒有告訴你資料之間的關係而已。

找出資料之間的關係:

假如青蛙最後要跳到第n個台階,那麼,?有兩種辦法:

第一種:從第n - 1個台階跳1級台階

第二種:從第n - 2個台階一下跳2級台階

那麼,有朋友會問了,從第n - 2個台階到第n個台階也有兩種辦法呀,可以一下跳兩個,也可以每次跳乙個,這不是兩種辦法麼?

其實,並不是,如果從第n - 2到第n - 1,再從第n - 1到第n

當從第n - 1到第n的方法,已經歸屬於是第一種方法了

當n = 0時,f(0) = 0;

當n = 1時,f(1) = 1;

當n = 2時,f(2) = 2;

當n = 3時,f(3) = f(1) + f(2) = 3;

…f(n) = f(n - 1) + f(n - 2),n > 2

不難寫出遞迴**:

class

solution

}

毫無意外的, 超出了時間限制。。。

那麼,我們使用迭代:

class

solution

return sum;

}}

class

solution

return dp[n];}

}

青蛙跳台階(劍指 Offer 10 II)

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 coding utf 8 class solution def jumpfloor self,number write code here a,b 1,2 for i in range...

劍指 Offer 10 II 青蛙跳台階問題

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。答案需要取模 1e9 7 1000000007 如計算初始結果為 1000000008,請返回 1。示例 1 輸入 n 2 輸出 2 示例 2 輸入 n 7 輸出 21 示例 3 輸入 n 0 輸出 1...

劍指 Offer 10 II 青蛙跳台階問題

leetcode 劍指 offer 有 n 個台階,設 n 個台階有 dp n 種跳法,分情況 青蛙跳 1 個台階,剩下的 n 1 個台階有 dp n 1 種跳法 青蛙跳 2 個台階,剩下的 n 2 個台階有 dp n 2 種跳法。由上找到狀態之間的關係 dp n d n 1 dp n 2 一直按照...