16.最接近的三数之和

时游小于 1 分钟LeetCode

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

上次编辑于:
贡献者: 15327360835
Loading...