3sum

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        n = len(nums)
        ans = []

        if n<3: return ans

        for i in range(n):
            if i>0 and nums[i] == nums[i-1]:
                continue 
            k = n-1
            target = 0 - nums[i]

            for j in range(i+1,n):
                if j>i+1 and nums[j] == nums[j-1]:
                    continue
                while j<k and nums[j] + nums[k] > target: 
                    k -= 1
                if j==k:
                    break
                if nums[j] + nums[k] == target:
                    ans.append([nums[i],nums[j],nums[k]])

        return ans