三个数的最大乘积

430 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

题目描述

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。(出自力扣题目)

  • 示例1
输入: nums = [1,2,3]
输出: 6
  • 示例2
输入: nums = [1,2,3,4]
输出: 24
  • 示例3
输入: nums = [-1,-2,-3]
输出: -6

思路分析

  • 在一个数组中找出由三个数组成的最大乘积,这里就有两种情况;第一种是数组里面全是正数,那么取数组里面最大的三个数的乘积,它就是最大的数;如果数组内全是负数,那么取数组里面最小的三个数的乘积,它就是最大值;第二种情况是数组里面有正数和负数,找出最大的乘积就只有两种可能,可能三个最大正数的乘积是最大的,也有可能两个最小的负数和一个最大的正数是最大的乘积。
  • 为了能快速取到最大值或者最小值,我们先把数组进行排序。

AC代码

let arr = [1,4,-1,4]
function maximumProduct(nums) {
    nums.sort((a, b) => a - b);
    let i = nums.length;
    let n = nums[0] * nums[1] * nums[i - 1];
    let m = nums[i - 1] * nums[i - 2] * nums[i - 3]
    return Math.max(n, m);
};
console.log(maximumProduct(arr))

总结

这是一道找出最值并且计算的,主要是注意两数相乘时,数字到底是正数还是负数;复杂类型属于简单的;这道算法题还有很多种解法,这里只是给出了一个简单的解决方法(出自力扣)。