[LeetCode] 16. 3Sum Closest

Chobby·2024년 8월 22일
1

LeetCode

목록 보기
53/194

현재 값과 이전 등장했던 유사 값들의 합을 비교하여 가장 근접한 3가지 수를 찾도록 하였음
투 포인터를 이용하는 점은 15번 문제 풀이와 대부분 유사함

😎풀이

function threeSumClosest(nums: number[], target: number): number {
    nums.sort((a, b) => a - b);
    let closestSum = nums[0] + nums[1] + nums[2];

    for (let i = 0; i < nums.length - 2; i++) {
        let left = i + 1;
        let right = nums.length - 1;

        while (left < right) {
            const currentSum = nums[i] + nums[left] + nums[right];

            if (Math.abs(currentSum - target) < Math.abs(closestSum - target)) {
                closestSum = currentSum;
            }

            if (currentSum > target) {
                right--;
            } else if (currentSum < target) {
                left++;
            } else {
                return currentSum; // 정확히 target과 일치하는 경우 즉시 반환
            }
        }
    }

    return closestSum;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글