3 Sum

LeetCode 15

class Solution:
    def threeSum(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        nums.sort()
        #[-4, -1, -1, 0, 1 ,2]
        res = []
        for i in range(len(nums)):
            if i > 0 and nums[i] == nums[i-1]:
                continue
            a = nums[i]
            left = i + 1
            right = len(nums) - 1
            
            while left < right:
                b = nums[left]
                c = nums[right]
                target = a + b + c
                
                if target == 0:
                    res.append((a, b, c))
                    while left < right and nums[left] == nums[left+1]:
                        left = left + 1
                    while left < right and nums[right] == nums[right-1]:
                        right = right - 1 
                    left = left + 1
                    right = right - 1
                elif target < 0:
                    left = left + 1
                elif target > 0:
                    right = right -1       

        return res
            

Last updated