1def three_sum(nums):
2 nums.sort()
3 res = []
4 for i in range(len(nums) - 2):
5 if i > 0 and nums[i] == nums[i-1]: continue
6 left, right = i + 1, len(nums) - 1
7 while left < right:
8 sum_val = nums[i] + nums[left] + nums[right]
9 if sum_val == 0:
10 res.append([nums[i], nums[left], nums[right]])
11 left += 1; right -= 1
12 elif sum_val < 0: left += 1
13 else: right -= 1
14 return res