16. 3Sum Closest

来源:互联网 发布:2016中国网络影视峰会 编辑:程序博客网 时间:2024/06/13 03:55

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    }}
0 0
原创粉丝点击