3Sum Closest

Key Idea

Solution

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        # inputs: List[int], int
        # outputs: int
        # Description:
            # Given an interger array nums of length n, and an interger, finde 3 itnergers at distinct indicies in nums such that the sums is clsoest to target
            # Output does not care about indices, just the sum
        # initialize
        # Sorted list
        nums.sort()
        # Get initial closest sum
        closest_sum = nums[0] + nums[1] + nums[2]

        # Iterate
        for pointer in range(len(nums) - 2):
            left_pointer = pointer + 1
            right_pointer = len(nums) - 1

            while left_pointer < right_pointer:
                current_sum = nums[pointer] + nums[left_pointer] + nums[right_pointer]
                # Check the difference
                if abs(current_sum - target) < abs(closest_sum - target):
                    closest_sum = current_sum
                # moving pointers
                if current_sum < target:
                    left_pointer += 1
                elif current_sum > target:
                    right_pointer -= 1
                else:
                    # If iti s equal we return it
                    return target
        return closest_sum

Complexity