10.最接近的三数之和

题目描述:

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

例如,给定数组 nums = [-121-4], 和 target = 1.

与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

代码实现:

JavaScript

  • 和上一题一样的指针法,现在感觉对指针法更顺手了,还不错。
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var threeSumClosest = function(nums, target) {
    nums.sort((a, b) => a - b)
    var sum = nums[0] + nums[1] + nums[2]
    var val = Math.abs(sum - target)
    for (var i = 0; i < nums.length - 2; i++ ) {
        var j = i + 1
        var k = nums.length - 1
        while (j < k) {
            var temp = nums[i] + nums[j] + nums[k]
            if (Math.abs(temp - target) < val) {
                sum = temp
                val = Math.abs(temp - target)
            } 
            if (temp < target) {
                j++
            } else if (temp > target) {
                k--
            } else {
                return temp
            }
        }
    }
    return sum
};

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章