题目描述
给你一个整型数组 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)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
因为是三个数相乘,因此获取最大数的方式就是尽量选择三个最大的正数相乘、两个最小的负数与一个最大的正数相乘。因此可以先排序,然后结果就返回 max(下标为0、1、length-1的数相乘, 下标为length-1、length-2、length-3的数相乘) 。相当于一道数学题。
代码详解
class Solution {
public int maximumProduct(int[] nums) {
Arrays.sort(nums); // 先排序
// 然后取max(下标为0、1、length-1的数相乘, 下标为length-1、length-2、length-3的数相乘)
return Math.max(nums[0] * nums[1] * nums[nums.length-1], nums[nums.length-3] * nums[nums.length-2] * nums[nums.length-1]);
}
}
注意点
- 此题很容易想到数学法来解答,但是有很多人容易多想好几种分支情况,从而造成思绪混乱。