leetcode-628. 三个数的最大乘积

628. 三个数的最大乘积 - 力扣(Leetcode)

排序后取最小的两个数和最大的数的乘积与前三大的乘积的最大值,防止最小的两个数是负数,负负得正

取这5个数的过程,其实可以直接一次遍历出来,但是排序可以调用标准库

func maximumProduct(nums []int) int {
    sort.Ints(nums)

    // minusBig := 0
    // if nums[0] < 0 && nums[1] < 0 {
    //     minusBig = nums[0] * nums[1] * nums[len(nums)-1]
    // }

    // zBig := nums[len(nums)-1]*nums[len(nums)-2]*nums[len(nums)-3]

    // if zBig < minusBig {
    //     return minusBig
    // }

    return max(nums[0] * nums[1] * nums[len(nums)-1], nums[len(nums)-1]*nums[len(nums)-2]*nums[len(nums)-3])

    // return zBig
}

func max(x, y int) int {
    if x > y {
        return x
    }
    return y
}
posted @ 2023-01-02 23:06  吴丹阳-V  阅读(12)  评论(0编辑  收藏  举报