给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
返回这三个数的和。
假定每组输入只存在恰好一个解。
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var threeSumClosest = function(nums, target) {
// 这里一定要设置Infinity 不可以设置为0 因为无法确定target的大小
let res = Infinity;
// // 1. 排序预处理
nums.sort((a,b)=>a-b);
for(let i = 0; i < nums.length; i++){
let l = i+1;
let r = nums.length - 1;
while(l < r){
let num = nums[l] + nums[i] + nums[r];
if(Math.abs(num - target) < Math.abs(res - target)){
res = num;
}
if(num > target){
r--;
}
if(num < target){
l++;
}
if(num === target){
return num
}
}
}
return res
};