乙隻青蛙一次可以跳上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)
據此,將x
從0
到n/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 和...