12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package main
- import (
- "sort"
- )
- // same as three sum
- func threeSumClosest(nums []int, target int) int {
- sort.Ints(nums)
- min := 1<<31 - 1
- res := 0
- for a := 0; a < len(nums)-2; a++ {
- // do NOT skip duplicated numbers!
- // [1 1 1 0], 100 -(skip 1)-> [1 1 0] 100 -> 2, WA
- b, c := a+1, len(nums)-1
- for b < c {
- sum := nums[a] + nums[b] + nums[c]
- if abs(sum-target) < min {
- res = sum
- min = abs(sum - target)
- }
- if sum < target {
- b++
- } else if sum > target {
- c--
- } else {
- return sum
- }
- }
- }
- return res
- }
- /* func main() {
- a1 := []int{-1, 0, 1, 2, -1, -4}
- fmt.Println(threeSumClosest(a1, 0))
- a2 := []int{-1, 0, -4}
- fmt.Println(threeSumClosest(a2, 0))
- a3 := []int{1, 1, 1, 0}
- fmt.Println(threeSumClosest(a3, 100))
- } */
|