-
[리트코드] (LeetCode) 15번 3Sum 문제Problem Solving/LeetCode 2021. 7. 5. 17:30
파라미터로 주어지는 리스트 nums에서 3개의 요소로 0이 되는 값을 새로운 리스트로 만들어서 리스트 in 리스트 형태로
리턴하면 되는 문제다.
처음에는 브루트 포스로 시도 했으나 시간 초과로 틀렸고,
그 이후에는 투 포인터를 활용해서 문제를 풀렸고 시도 했으나..
뭔가 한 끝이 맞지 않아 계속 틀렸고, 책을 참고하여 코드를 작성하였다.
여기서 중요한 포인트는 마지막 else 문에서 while문을 통해 같은 값은 계속해서 스킵해주는 것이다.
class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: result = [] nums.sort() for i in range(len(nums)-1): if i > 0 and nums[i] == nums[i-1]: continue left = i + 1 right = len(nums) - 1 while left < right: num = nums[i] + nums[left] + nums[right] if num < 0: left += 1 elif num > 0: right -= 1 else: result.append([nums[i], nums[left], nums[right]]) while left < right and nums[left] == nums[left + 1]: left += 1 while left < right and nums[right] == nums[right - 1]: right -= 1 left += 1 right -= 1 return result
'Problem Solving > LeetCode' 카테고리의 다른 글
[리트코드] (LeetCode) 21번 Merge Two Sorted Lists 문제 (0) 2021.07.05 [리트코드] (LeetCode) 20번 Valid Parentheses 문제 (0) 2021.07.05 [리트코드] (LeetCode) 2번 Add Two Numbers 문제 (0) 2021.07.05 [리트코드] (LeetCode) 1번 Two Sum 문제 (0) 2021.06.15 [리트코드] (LeetCode) 49번 Group Anagrams 문제 (0) 2021.06.14