第六十二天:力扣16题,最接近的三数之和
地址:leetcode-cn.com/problems/3s…
思路:排序+双指针,排序,固定一个值,左右指针向中间逼近
三数和 > target,右指针左移
三数和 < target, 左指针右移
三数和 = target, 直接输出target
var threeSumClosest = function(nums, target) {
nums.sort((a, b) => a - b);
let sum = nums[1] + nums[2] + nums[0];
for(let i = 0; i < nums.length - 2; i++)
{
let left = i + 1;
let right = nums.length - 1;
while(left < right)
{
sum = (Math.abs(nums[i] + nums[left] + nums[right] - target) < Math.abs(sum - target) ? nums[i] + nums[left] + nums[right] : sum);
if(nums[i] + nums[left] + nums[right] === target)
{
return target;
}
else if(nums[i] + nums[left] + nums[right] > target)
{
right--;
}
else{
left++;
}
}
}
return sum;
};
执行用时:92 ms, 在所有 JavaScript 提交中击败了76.40%的用户
内存消耗:39.6 MB, 在所有 JavaScript 提交中击败了25.17%的用户