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 {
fmt.Println("input error")
return 0
}
sort.Ints(nums)
var min=nums[0]+nums[1]+nums[2]
var max=nums[len(nums)-1]+nums[len(nums)-2]+nums[len(nums)-3]
var tmp=min
if max<=target {
return max
}else if min>=target{
return min
}else{
var i,j,k int
for i=0;i<len(nums);i++{
for j=i+1;j<len(nums);j++{
for k=j+1;k<len(nums);k++{
var cur int=nums[i]+nums[j]+nums[k]
if cur>target{
if cur-target<target-tmp {
tmp = cur
break
}
}else if cur==target{
return target
}else {
if cur>tmp{
tmp=cur
}
}
}
}
}
}
return tmp
}