016-最接近的三数之和

Description

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数, 使得它们的和与 target 最接近。 返回这三个数的和。假定每组输入只存在唯一答案。

Note

注意:答案中不可以包含重复的三元组。

Example
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
Solution
func threeSumClosest(nums []int, target int) int {
    closestSum := math.MaxInt32
    sort.Ints(nums)
    for i := 0;i < len(nums)-2;i ++ {
        left,right := i +1,len(nums)-1
        for left < right {
            sum := nums[i] + nums[left] + nums[right]
            if numAbs(closestSum,target) > numAbs(sum,target) {
                closestSum = sum
            }
            if sum < target {
                left++
            }else if sum > target {
                right--
            }else {
                return sum
            }
        }
    }
    return closestSum
}

func numAbs(a,b int)int  {
    if a > b {
        return a - b
    }
    return b - a
}

leetCode地址