思路
首先先对数组排序,数组可以分成三类,一类是全是正数的,一类是正数负数混合,另一类是全是负数,对于第一类,直接输出后三位乘积即可,对于后两类,假如后三位乘积为正数,那肯定是最大的,假如为负数,那么就把最小的两个负数乘积结果乘以最大的数,无论最大的数是正数还是负数,结果都会是最大的。
题解
func maximumProduct(nums []int) int {
length := len(nums)
sort.Sort(sort.IntSlice(nums))
return max((nums[length-3] * nums[length-2] * nums[length-1]), (nums[0] * nums[1] * nums[length - 1]))
}
func max(a,b int ) int {
if (a < b) {
a, b = b, a
}
return a
}