前言
新的一年,好好学习。
正文
问题来源
本问题来自leetcode上的628题。
问题描述
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
分析:
func max(a, b int) int {
if a > b {
return a
}
return b
}
func maximumProduct(nums []int) int {
sort.Ints(nums)
n := len(nums)
return max(nums[0]*nums[1]*nums[n-1],nums[n-1]*nums[n-2]*nums[n-3])
}
func maximumProduct(nums []int) int {
max := -1001
max1 := -1001
max2 := -1001
min1 := 1001
min2 := 1001
for _, n := range nums {
switch {
case n > max:
max2, max1, max = max1, max, n
case n > max1:
max2, max1 = max1, n
case n > max2:
max2 = n
}
switch {
case n < min1:
min2, min1 = min1, n
case n < min2:
min2 = n
}
}
return bigger(max1*max2, min1*min2) * max
}
func bigger(a, b int) int {
if a > b {
return a
}
return b
}
总结:
勤思考。
结语
不管怎么样好好加油。