[LeetCode/Python] 3Sum

김미영·2024년 3월 13일

LeetCode

목록 보기
4/11

📌 문제


📝 해결

시간 복잡도 : O(n^2)

나에겐 아직 매운맛이었다... 돌고돌아서 투포인터로 풀면 되겠거니~ 까지는 감이 왔는데 그이후로 넘 어려워서 코드를 참고했음

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        ans = set()
        nums.sort()
        n = len(nums)
        num_map = {num: idx for idx, num in enumerate(nums)}
        
        for i in range(n):
            if i > 0 and nums[i] == nums[i - 1]:
                continue
            
            for j in range(i + 1, n):
                complement = -(nums[i] + nums[j])
                if complement in num_map and num_map[complement] > j:
                    ans.add((nums[i], nums[j], complement))
        
        return ans

0개의 댓글