3Sum Closest
Description
Given an array nums
of n integers and an integer target
, find three integers in nums
such that the sum is closest to target
. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example 1:
Input: nums = [-1,2,1,-4], target = 1 Output: 2 Explanation: The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
Constraints:
3 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
-10^4 <= target <= 10^4
Solution(javascript)
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
const threeSumClosest = function (nums, target) {
let diff = Infinity
let result = 0
nums.sort((a, b) => a - b)
for (let i = 0; i < nums.length; i++) {
let left = i + 1
let right = nums.length - 1
while (left < right) {
const sum = nums[i] + nums[left] + nums[right]
const currentDiff = sum - target
if (currentDiff > 0) {
right -= 1
} else {
left += 1
}
if (Math.abs(currentDiff) < diff) {
result = sum
}
diff = Math.min(Math.abs(currentDiff), diff)
}
}
return result
}