加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

16. 3Sum Closest

发布时间:2020-12-16 18:15:03 所属栏目:大数据 来源:网络整理
导读: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

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
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读