Leetcode Note: Go - Maximum Product of Three Numbers

Add Binary - LeetCode
https://leetcode.com/problems/add-binary/

  • Go 言語で取り組んだメモ

所感

  • int 配列 nums から 3つ の数値で積が最大になるよう算出する
  • ポイントとして [-100,-98,-1,2,3,4] のような nums が渡された場合、マイナス値の積として 39,200 が最大の積になるので注意
    • シンプルにソートして最大値から積を求めると 24 になってしまい Wrong Answer となる

回答

Maximum Product of Three Numbers - LeetCode
https://leetcode.com/problems/maximum-product-of-three-numbers/solution/

Golang Not interested approach - LeetCode Discuss
https://leetcode.com/problems/maximum-product-of-three-numbers/discuss/304139/Golang-Not-interested-approach

func maximumProduct(nums []int) int {
	sort.Ints(nums)
	numslen := len(nums)

	minstart := nums[0] * nums[1] * nums[numslen-1]
	maxstart := nums[numslen-3] * nums[numslen-2] * nums[numslen-1]

	return int(math.Max(float64(minstart), float64(maxstart)))
}
  • まずはソートする
  • 最小値からの算出、最大値からの算出を行い、結果が大きい方を return する