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

更新于:31-8 月-2020

98 查看

开启您的 职业生涯

通过完成本课程获得认证

开始
广告