和昨天的那道题目很像,理解了后这道题20分钟就出来了
var threeSumClosest = function(nums, target) {
nums.sort((a,b) => a-b);
let size = nums.length;
let keepminus = undefined;
for(let i = 0;i< size -2;i++){
let left = i+1;
let right = size-1;
while(left < right){
let result = nums[i]+ nums[left]+nums[right];
let minus = result - target;
if(!keepminus){
keepminus = minus;
}else{
if(Math.abs(keepminus) > (Math.abs(minus))){
keepminus = minus
}
}
if(minus === 0) {
return result;
}
if(minus > 0){
while(nums[right]===nums[--right]){}
}
if(minus < 0){
while(nums[left]===nums[++left]){}
}
}
}
return keepminus + target;
};