| 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))
 
- } */
 
 
  |