var threeSumClosest = function(nums, target) {
//array sort
nums = nums.sort(function(a,b){
return a - b;
})
//算三数之和与目标值的距离
let gap = Infinity;
//保存答案
let res = 0;
//k遍历,pq双指针
for(let k = 0; k < nums.length - 2; k++){
let p = k + 1, q = nums.length - 1;
while(p < q){
let tmp_gap = Math.abs(nums[k] + nums[p] + nums[q] - target);
if(tmp_gap <= gap){
res = nums[k] + nums[p] + nums[q];
gap = tmp_gap;
}
//当三数之和<目标值时,说明三个数得变大,只能动pq,q无法变大只能动p++
//q同理
if(nums[k] + nums[p] + nums[q] == target)return res;
else if(nums[k] + nums[p] + nums[q] < target)p++;
else q--;
}
}
return res;
};
JS力扣刷题16.最接近的三数之和
最新推荐文章于 2024-03-04 16:13:37 发布