628. 三个数的最大乘积

思路

首先先对数组排序,数组可以分成三类,一类是全是正数的,一类是正数负数混合,另一类是全是负数,对于第一类,直接输出后三位乘积即可,对于后两类,假如后三位乘积为正数,那肯定是最大的,假如为负数,那么就把最小的两个负数乘积结果乘以最大的数,无论最大的数是正数还是负数,结果都会是最大的。

题解

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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容