Javascript 中线性时间内两个整数的最大乘积
我们需要编写一个 JavaScript 函数,该函数接受一个包含正数和负数的数字数组,并返回一次遍历中两个数字的最大乘积。
让我们编写此函数的代码 −
示例
const arr = [-1, -3, -4, 2, 0, -5]; const arr2 = [2, 3, 5, 7, -7, 5, 8, -5]; const produce = arr => arr.reduce((acc, val) => acc*val); const maximumProduct = (arr = []) => { const [first] = arr; if(!first){ return 0; }; const creds = arr.reduce((acc, val) => { const { min, max } = acc; if(val > max[0]){ max[1] = max[0]; max[0] = val; return acc; }; if(val < min[0]){ min[1] = min[0]; min[0] = val; return acc; }; if(val > max[1]){ max[1] = val; return acc; }; if(val < min[1]){ min[1] = val; return acc; }; return acc; }, { min: [first, first], max: [first, first] }); const { max, min } = creds; return produce(max) > produce(min) ? produce(max) : produce(min); }; console.log(maximumProduct(arr)); console.log(maximumProduct(arr2));
输出
控制台中的输出将是 −
20 56
广告