15. 3Sum
# Medium
Solution:
class Solution(object):
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
# edge case
if len(nums) < 3:
return []
# regular case
result = set()
# sort the list
nums2 = sorted(nums)
for i in range(len(nums2)-2):
if i > 0 and nums2[i] == nums2[i-1]:
continue
j = i + 1
k = len(nums2) - 1
while j < k:
s = nums2[i] + nums2[j] + nums2[k]
if s == 0:
temp = (nums2[i], nums2[j], nums2[k])
result.add(temp)
j += 1
k -= 1
elif s > 0:
k -= 1
else:
j += 1
return resultLast updated