[LeetCode628. 三个数的最大乘积][简单] | 刷题打卡

247 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述:

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3] 输出:6

示例 2:

输入:nums = [1,2,3,4] 输出:24

示例 3:

输入:nums = [-1,-2,-3] 输出:-6

提示:

  • 3 <= nums.length <= 104
  • -1000 <= nums[i] <= 1000

链接:leetcode-cn.com/problems/ma…

二、思路分析:

1、如果数组都是正数,那结果就是最大的三个数的乘积

2、如果有一个负数,那结果还是最大的三个数的乘积

3、如果有两个以上负数,那结果可能是最小的两个负数乘以最大的正数或者最大三个数的乘积

4、如果全是负数,那结果是最大的三个数的乘积

所以只要比较最大三个数的乘积 和 最小两个数和最大数的乘积 哪个大就行

三、AC 代码:

var maximumProduct = function(nums) {
    nums.sort((a, b) => a - b)
    let len = nums.length
    let res1 = 1
    let res2 = 1
    for(let i = 1; i <= 3; i++) {
        res1 *= nums[len - i]
    }
    res2 = nums[0] * nums[1] * nums[len - 1]
    return Math.max(res1, res2)
};

四、总结:

先分析多种可能得情况,然后找出规律就可以解决啦! 14篇我终于肝完了! 开心

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位