Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Notice that the solution set must not contain duplicate triplets.
Example 1:
Input: nums = [-1,0,1,2,-1,-4]
Output: [[-1,-1,2],[-1,0,1]]
Example 2:
Input: nums = []
Output: []
Example 3:
Input: nums = [0]
Output: []
nested for문 3개 써서 돌렸는데 time limit에서 걸렸다. (for i... for j... for k....)
sorted()
) 후 리스트 요소를 하나씩 접근한다.l
, r
.result
에 추가한다.l
, r
둘 다 하나씩 이동하는 코드를 작성한다. def threeSum(nums):
new_num = sorted(nums)
length = len(new_num)
result = []
for i in range(length - 2):
if i > 0 and new_num[i] == new_num[i - 1]:
continue
l = i + 1
r = length - 1
while l < r:
total = new_num[i] + new_num[l] + new_num[r]
if total < 0:
l += 1
elif total > 0:
r -= 1
elif total == 0:
result.append([new_num[i], new_num[l], new_num[r]])
while l < r and new_num[l] == new_num[l+1]:
l += 1
while l < r and new_num[r] == new_num[r-1]:
r -= 1
l += 1
r -= 1
return result
nums가 모두 0일 경우 ➡️ [0,0,0]을 return 한다.
nums 요소가 3개 이하일 경우 ➡️ 그냥 빈 리스트를 return한다.