javascript算法集:数组中最大差值|斐波那契数列
数组中最大差值
方法一
1
2
3
|
function getMaxProfit1(ary){
return Math.max.apply(null, ary) - Math.min.apply(null, ary);
}
|
测试:getMaxProfit1([1, 2, 3, 4]) // 3
斐波那契数列
这里我们只实现通项公式
斐波那契数列 方法一
1
2
3
4
5
6
7
|
function fib1(n){
if(n === 1 || n === 2){
return 1;
}
return fib1(n - 1) + fib1(n - 2);
}
|
PS:时间复杂度为O(2^n),空间复杂度为O(n)
斐波那契数列 方法二
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function fib2(n){
let tem = [1, 1];
if(n === 1 || n === 2){
return 1;
}
// 数组索引从0开始,数列索引从1开始
for(let i = 2; i < n; i++){
tem[i] = tem[i-1] + tem[i-2];
}
return tem[n-1];
}
|
PS:时间复杂度为O(n),空间复杂度为O(n)
斐波那契数列 方法三
1
2
3
4
5
6
7
8
9
10
11
12
|
function fib2(n){
let prev = 1,
next = 1,
res;
for(let i = 2; i < n; i++){
res = prev + next;
prev = next;
next = res;
}
return res;
}
|
PS:时间复杂度为O(n),空间复杂度为O(1)
测试:fib2(3) // 2
THE END