const triplet_sum_close_to_target = function (arr, target_sum) {
let minClosestSum = Infinity
arr.sort((a, b) => a - b)
for (let i = 0; i < arr.length - 2; i++) {
const baseNum = arr[i]
let left = i + 1
let right = arr.length - 1
while (left < right) {
const leftNum = arr[left]
const rightNum = arr[right]
const sum = baseNum + leftNum + rightNum
if (sum === target_sum) {
return sum
}
if (Math.abs(minClosestSum - target_sum) > Math.abs(sum - target_sum)) {
minClosestSum = sum
}
if (sum > target_sum) {
right -= 1
}
if (sum < target_sum) {
left += 1
}
}
}
return minClosestSum
};
console.log(triplet_sum_close_to_target([-1,-1,-1,1,1], 0));
console.log(triplet_sum_close_to_target([-2, 0, 1, 2], 2));
console.log(triplet_sum_close_to_target([-3, -1, 1, 2], 1));
console.log(triplet_sum_close_to_target([1, 0, 1, 1], 100));
that weird line is there for a reason checkout this thread