첫 번째 내코드
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
res = []
nums.sort()
for l in range(len(nums)):
if l > 0 and nums[l] == nums[l - 1]:
continue
m, r = l+1, len(nums)-1
while m<r:
sub_sub = nums[m] + nums[r] + nums[l]
if sub_sub == 0:
res.append([nums[l], nums[m], nums[r]])
# 중복 제거: 동일한 m, r 값 건너뛰기
while m < r and nums[m] == nums[m + 1]:
m += 1
while m < r and nums[r] == nums[r - 1]:
r -= 1
r-= 1
m+=1
elif sub_sub > 0:
r -=1
else:
m +=1
return res
- l > 0:
- 첫 번째 요소(l = 0)는 이전 값이 없으므로 비교할 필요가 없습니다.
- l > 0 조건이 없으면 nums[l - 1]에서 인덱스 오류가 발생할 수 있습니다.
- nums[l] == nums[l - 1]:
- 현재 값이 이전 값과 동일하면 중복된 값을 처리하기 위해 현재 반복을 건너뜁니다.
- 이렇게 하면 동일한 조합이 결과에 추가되지 않습니다.
https://youtu.be/jzZsG8n2R9A?si=9ZYksLSSfhuBfkpL
https://youtu.be/1BGiX1ZZUpQ?si=PGqVtJh21ErxdO3c
'LeetCode > Top Interview 150' 카테고리의 다른 글
3. Longest Substring Without Repeating Characters (0) | 2024.11.29 |
---|---|
209. Minimum Size Subarray Sum (0) | 2024.11.29 |
167. Two Sum II - Input Array Is Sorted (0) | 2024.11.29 |
125. Valid Palindrome (0) | 2024.11.28 |
68. Text Justification (0) | 2024.11.28 |