題目:
給定一個(gè)包括 n 個(gè)整數(shù)的數(shù)組 nums 和 一個(gè)目標(biāo)值 target揪利。找出 nums 中的三個(gè)整數(shù)态兴,使得它們的和與 target 最接近。返回這三個(gè)數(shù)的和疟位。假定每組輸入只存在唯一答案瞻润。
例如,給定數(shù)組 nums = [-1甜刻,2绍撞,1,-4], 和 target = 1.
與 target 最接近的三個(gè)數(shù)的和為 2. (-1 + 2 + 1 = 2).
方法 排序+雙指針
思路: 同LeetCode15
時(shí)間復(fù)雜度:O(n^2)
空間復(fù)雜度:O(1)
var threeSumClosest = function(nums, target) {
nums.sort( (a, b) => a - b);
let i = 0;
let res = null;
let len = nums.length;
while(i < len - 2){
let left = i + 1, right = len - 1;
while(left < right){
let sum = nums[i] + nums[left] + nums[right];
if(res === null || Math.abs(target - sum) < Math.abs(target - res)){
res = sum;
}
if(sum < target){
left ++;
}else if(sum > target){
right --;
}else if(sum === target){
return target;
}
}
i++;
}
return res;
};