leetcode628三个数的最大乘积

leetcode628 Maximum Product of Three Numbers

Posted by BY on May 31, 2019

前言

新的一年,好好学习。

正文

问题来源

本问题来自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
}

总结:

勤思考。

结语

不管怎么样好好加油。