16.最接近的三数之和
小于 1 分钟
16.最接近的三数之和
/*
* @lc app=leetcode.cn id=16 lang=typescript
*
* [16] 最接近的三数之和
*/
// @lc code=start
function threeSumClosest(nums: number[], target: number): number {
nums.sort((a, b) => a - b);
let minSUm: number = nums[0] + nums[1] + nums[2]; // 记录最小和.
for (let k1 = 0; k1 < nums.length - 2; k1++) {
// 定义左右指针
let l = k1 + 1,
r = nums.length - 1;
while (l < r) {
let sum = nums[k1] + nums[l] + nums[r];
if (Math.abs(target - sum) < Math.abs(target - minSUm)) {
minSUm = sum;
}
if (sum > target) {
r--;
} else if (sum < target) {
l++;
} else {
return minSUm;
}
}
}
console.log(minSUm);
return minSUm;
}
threeSumClosest([-1, 2, 1, -4], 1);
// @lc code=end
Loading...
