Given an array S of n integers,find three integers in S such that the sum is closest to a given number,target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
For example,given array S = {-1 2 1 -4},and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
func threeSumClosest(nums []int,target int) int {
if len(nums) < 3 {
return -1
}
sort.Ints(nums)
result := nums[0] + nums[1] + nums[2]
for i := 0; i < len(nums)-2; i++ {
j := i + 1
k := len(nums) - 1
sum := 0
for j < k {
sum = nums[i] + nums[j] + nums[k]
if sum == target {
return sum
}
if sum > target {
k--
} else {
j++
}
result = getCloser(sum,result,target)
}
}
return result
}
func getCloser(num1,num2,target int) int {
if math.Abs(float64(num1-target)) > math.Abs(float64(num2-target)) {
return num2
} else {
return num1
}
}