16. 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
题解
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var threeSumClosest = function(nums, target) {
nums=nums.sort((a,b)=>a-b)
let add=nums[0]+nums[1]+nums[2]
for(let i=0;i<nums.length-2;i++){
if(nums[i]==nums[i-1]){
i++
}
let j=i+1,k=nums.length-1
while (j<k){
let temp=nums[i]+nums[j]+nums[k]
if(temp==target){
return temp
}else if(Math.abs(target-add)>Math.abs(target-temp)){
add=temp
}
if(nums[j]==nums[j-1]){
j++
}
if(nums[k]==nums[k+1]){
k--
}
if(temp<target){
j++
}
if(temp>target){
k--
}
}
}
return add
};