问题描述:
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
注意:
- 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
- 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
解题思路:
- 先对给定数组进行排序,我采取降序排序。
- 此时分为以下几种情况:
- 排序后的第一个元素小于等于0,或者最后一个元素大于等0,此时三个乘积最大应该是前三个元素的乘积。
- 排序后的第二个元素小于等于0,或第三个个元素小于等于零,此时三个乘积最大应该是第一个和最后两个元素的乘积。
- 排序后的最后两个元素都为负数,并且乘积大于第二个和第三个元素的乘积,此时三个乘积最大应该是第一个和最后两个元素的乘积。
- 除了以上情况,其他情况的最大乘积均是排序后的前三个元素的乘积。
实现过程:
public static int maximumProduct(int[] nums) {
i