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
}
最后编辑: kuteng 文档更新时间: 2021-06-05 10:16 作者:kuteng