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 する