力扣(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;

    }
}
原文地址:https://www.cnblogs.com/axiangcoding/p/10409828.html