劍指offer,每日一練 2018.10.17
阿新 • • 發佈:2018-11-08
今天做的一系列迴歸與迴圈的演算法題(當數學題做)。
1、大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。
n<=39
時間限制:1秒 空間限制:32768K 熱度指數:417477
//斐波那契數列 a[n] = a[n-1] + a[n-2]; function Fibonacci(n) { // write code here if(n <= 1) return n; //因為遞迴,所以前兩個值得自己找出 else{ var arr=[]; arr[0] = 0; arr[1] = 1; for(var i=2;i<=n;i++){ arr[i] = arr[i-1] + arr[i-2]; } } return arr[n]; }
2、一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
時間限制:1秒 空間限制:32768K 熱度指數:318040
//典型的找規律的題,當數學題做,先找出算第n個的演算法 //不難發現,a1 = 1; a2 = 2; a3 = 3; a4 = 5; a5 = 8;又是典型的斐波那契數列 function jumpFloor(number) { // write code here var arr = []; arr[0] = 0; arr[1] = 1; arr[2] = 2; for(var i=3;i <= number;i++){ arr[i] = arr[i-1] + arr[i-2]; } return arr[number]; }
3、一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
時間限制:1秒 空間限制:32768K 熱度指數:249111
//同樣的找規律,得出a1 = 1; a2 = 2; a3 = 4; a4 = 8; a5 = 16; //不難得出,an = 2^(n-1);即得出演算法 function jumpFloorII(number) { // write code here var sum=1; if(number == 1) return 1; else{ for(var i=1;i<number;i++){ sum*=2; } } return sum; }
4、我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
時間限制:1秒 空間限制:32768K 熱度指數:222312
//同樣找規律,得出 a1 1 = 1; a2 = 2; a3 = 3; a4 = 5; a5 = 8;
//典型的斐波那契數列
function rectCover(number)
{
// write code here
var arr = [];
arr[0]=0;
arr[1]=1;
arr[2]=2;
for (var i=3;i<=number;i++){
arr[i] = arr[i-1] + arr[i-2];
}
return arr[number];
}