Back to blog
Nov 26, 2024
2 min read

LeetCode 16: 3Sum Closest

Leetcode 16: 3Sum Closest solution in Python

Problem Description

LeetCode Problem 16

Given an integer array nums of length n 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).

Example 2:

Input: nums = [0,0,0], target = 1 Output: 0 Explanation: The sum that is closest to the target is 0. (0 + 0 + 0 = 0).

 

Constraints:

  • 3 <= nums.length <= 500
  • -1000 <= nums[i] <= 1000
  • -104 <= target <= 104

Difficulty: Medium

Tags: array, two pointers, sorting

Rating: 94.85%

Complexity Analysis

The solution has the following complexity characteristics:

  • Time Complexity: O(n2)O(n²)
  • Space Complexity: O(1)O(1)

Note: This is an automated analysis and may not capture all edge cases or specific algorithmic optimizations.

Solution

Here’s my Python solution to this problem:

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        nums.sort()
        n = len(nums)
        abs_s = float('inf')
        s = 0

        for i in range(n-2):
            l = i+1
            r = n-1

            while l < r:
                curr_s = nums[i]+nums[l]+nums[r]
                diff = curr_s - target
                if abs(diff) < abs_s:
                    abs_s = abs(diff)
                    s = curr_s

                if curr_s < target:
                    l += 1
                else:
                    r -= 1
        return s