跳到主要内容

628.三个数的最大乘积

链接:628.三个数的最大乘积
难度:Easy
标签:数组、数学、排序
简介:给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

题解 1 - typescript

  • 编辑时间:2021-01-20
  • 执行用时:148ms
  • 内存消耗:43MB
  • 编程语言:typescript
  • 解法介绍:计算最大三个数,进行特殊值,有两个负数的比较。
function maximumProduct(nums: number[]): number {
nums.sort((a, b) => a - b);
const len = nums.length;
const compute = (arr: number[]) => arr.reduce((total, cur) => total * cur, 1);
const maxNum = compute(nums.slice(-3));
return nums[0] < 0 && nums[1] < 0 && nums[len - 1] > 0
? Math.max(compute([nums[0], nums[1], nums[len - 1]]), maxNum)
: maxNum;
}

题解 2 - typescript

  • 编辑时间:2021-01-20
  • 执行用时:152ms
  • 内存消耗:43.2MB
  • 编程语言:typescript
  • 解法介绍:优化题解 1。
function maximumProduct(nums: number[]): number {
nums.sort((a, b) => a - b);
const len = nums.length;
return Math.max(nums[0] * nums[1] * nums[len - 1], nums[len - 1] * nums[len - 2] * nums[len - 3]);
}