力扣(LeetCode)三个数的最大乘积 个人题解

Posted axiangcoding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣(LeetCode)三个数的最大乘积 个人题解相关的知识,希望对你有一定的参考价值。

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

示例 1:

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

示例 2:

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

注意:

  1. 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
  2. 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

 

因为这题里出现了负数,所以最大值并不是简单得取三个最大值就好了。

参考了评论区的做法,将这个问题分解为:三个最大值的乘积 和 两个最小值和一个最大值的乘积 二者之间取最大值。

 

代码如下:

class Solution {
    public int maximumProduct(int[] nums) {
        int len = nums.length;
        Arrays.sort(nums);
        int ret = nums[0] * nums[1] * nums[len - 1];
        int ret2 = nums[len - 1] * nums[len - 2] * nums[len - 3];
        return ret > ret2 ? ret : ret2;

    }
}

 

以上是关于力扣(LeetCode)三个数的最大乘积 个人题解的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:三个数的最大乘积628

Leetcode 628.三个数的最大乘积

LeetCode 628. 三个数的最大乘积

Leetcode题解——算法思想之数学

[LeetCode] 628. 三个数的最大乘积 ☆

leetcode152. 乘积最大子序列