LeetCode 面試題10 2 青蛙跳台階問題

2022-08-30 20:33:12 字數 878 閱讀 9744

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

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

示例 1:

輸入:n = 2

輸出:2

示例 2:

輸入:n = 7

輸出:21

青蛙每次跳台階的情況有兩種:

①跳2級台階

②跳1級台階

分析假設情況①共出現x(x >= 0,x <= n/2)次,則還剩下n - 2x級台階給情況②。那麼,青蛙一共跳了y = x + n - 2x = n - x次。

那麼,問題就轉化為:將 x 個完全相同的球放入 y 個有次序的盒子,共有多少種情況?

計算公式為:

times = y*(y-1)*(y-2)*...*(y-x+1)/(1*2*3*....*x)
據此,將x0n/2的所有times值累加,即得出結果。

**

public int numways(int n) 

res += upper/lower;

}return res;

}

問題

理論上,這個方法可以計算出結果。

但,經過測試,當x > 23時,結果出現錯誤。

由於 先進行乘法,再進行取模,無法避免 進行乘法時結果溢位的情況。

暫時未找到解決辦法。

分析**

參考leetcode-面試題10.1-斐波那契數列

leetcode 面試題專題

面試題51.陣列中的逆序對 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。利用歸併排序,將陣列分成兩部分,前面一部分和後面一部分,進行歸併的時候,需要比較兩個陣列的數值大小,如果第二個陣列的值小的話,代表前乙個陣列剩下的都...

位元組面試題 leetcode

給定乙個迴圈陣列 最後乙個元素的下乙個元素是陣列的第乙個元素 輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 1。示例 1 輸入 1,2,1 輸出 2,1,2 解釋 第乙個 ...

劍指offer 面試題10(2) 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 這個題是斐波那契數列問題的變形。思路 1 用 劍指offer 面試題10 1 斐波那契數列中解答斐波那契數列問題的思路即可 建立並初始化兩個變數fibonaccifirst f 0 和...