1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| def threeSum(self, nums): result = [] nums.sort() for left in range(len(nums) - 2): if left > 0 and nums[left] == nums[left - 1]: continue mid = left + 1 right = len(nums) - 1 while mid < right: t_sum = nums[left] + nums[mid] + nums[right] if t_sum < 0: mid += 1 elif t_sum > 0: right -= 1 else: result.append([nums[left], nums[mid], nums[right]]) while mid < right and nums[mid] == nums[mid + 1]: mid += 1 while mid < right and nums[right] == nums[right - 1]: right -= 1 mid += 1 right -= 1 return result
|