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






