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

在這裏插入圖片描述

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