628 三个数的最大乘积 简单
发布者:admin 发表于:417天前 阅读数:603 评论:0

628. 三个数的最大乘积 简单

给你一个整型数组 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

代码参考:

package main

import (
    "fmt"
    "sort"
)

func main() {
    fmt.Println(maximumProduct([]int{1, 0, 100}))          // 0
    fmt.Println(maximumProduct([]int{-4, -3, -2, -1, 60})) // 720
}

// 注意各种逻辑判断即可
func maximumProduct(nums []int) int {
    if len(nums) <= 0 {
        return 0
    }

    sort.Ints(nums)
    maxNegMulti := nums[0] * nums[1] // 最小的两个数之积

    multi := 1
    for i := len(nums) - 1; i >= 0 && i > len(nums)-1-3; i-- {
        multi *= nums[i]
    }

    if maxNegMulti > 0 && multi < maxNegMulti*nums[len(nums)-1] {
        return maxNegMulti * nums[len(nums)-1] // 最大负数积乘最大正数
    }

    return multi
}