- 문제 링크: https://leetcode.com/problems/3sum/

- 난이도: Medium

 

합이 0이 되는 모든 세쌍(Triplet)을 중복 없이 반환하는 문제다

정렬 후 투 포인터를 응용하면 된다

 

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        ret = set()
        nums.sort()
        for i in range(len(nums) - 2):
            left, right = i+1, len(nums)-1
            while left < right:
                sum = nums[left] + nums[right]
                if sum + nums[i] == 0:
                    ret.add((nums[i], nums[left], nums[right]))
                    left += 1
                    right -= 1
                elif sum + nums[i] > 0:
                    right -= 1
                else:
                    left += 1

        return [list(x) for x in ret]
반응형