说明
由于本题与上第15道题目
解题一直,因此不再叙述讲解。其实就懒
var threeSumClosest = function (nums, target) {
//创建返回值
let result = Infinity;
//三数之和问题,先转换成两数之和问题,再利用双指针求解
//先将nums排序,赋值给arr
let arr = nums.sort((a, b) => a - b);
console.log(arr);
//外层一个for循环先确定一个值
for (let i = 0; i < arr.length - 2; i++) {
//定义两个指针,左指针初始位置指向i+1的位置,右指针初始位置为arr末端
let left = i + 1;
let right = arr.length - 1;
while (left < right) {
//计算出三者之和
let sum = arr[i] + arr[left] + arr[right];
//比较sum与target的关系
if (sum < target) {
left++;
}
if (sum > target) {
right--;
}
if (sum == target) {
return target;
}
//计算出二者差值(用平方判断)
//使用三目运算符比较原有的值和当前值与target的距离
result =
Math.pow(sum - target, 2) < Math.pow(result - target, 2) ? sum : result;
}
}
console.log(result);
return result;
};