在 JavaScript 中,返回数组中 n 个数能够得到的尽可能最大的乘积


我们需要编写一个 JavaScript 函数,该函数以一个数字数组作为第一个参数,并以一个数字作为第二个参数 n。

我们的函数应计算并返回数组中 n 个数字的可能的最大乘积。

示例

代码如下 −

const getHighestProduct = (arr, num) => {
   let prod = 1;
   const sorter = (a, b) => a - b;
   arr.sort(sorter);
   if (num > arr.length || num & 2 && arr[arr.length - 1] < 0) {
      return;
   };
   if (num % 2) {
      prod = arr.pop();
      num--;
   };
   while (num) {
      prod *= arr[0] * arr[1] > arr[arr.length - 2] * arr[arr.length - 1]
      ? arr.shift() * arr.shift() : arr.pop() * arr.pop();
      num -= 2;
   };
   return prod;
}
console.log(getHighestProduct([1, 10, -5, 1, -100], 3));
console.log(getHighestProduct([3, 4, 5, 6, 7], 3));
console.log(getHighestProduct([3, 4, -5, -6, -7], 3));

输出

控制台中的输出如下 −

5000
210
168

更新于:2020 年 11 月 24 日

81 阅读量

开启你的 职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.