1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() n = len(nums) res = [] for i in range(n): if i > 0 and nums[i - 1] == nums[i]: continue t = -nums[i] l, r = i + 1, n - 1 while l < r: s = nums[l] + nums[r] if s == t: res.append([nums[i], nums[l], nums[r]]) l += 1 while l < r and nums[l - 1] == nums[l]: l += 1 r -= 1 while l < r and nums[r] == nums[r + 1]: r -= 1 elif s < t: l += 1 while l < r and nums[l - 1] == nums[l]: l += 1 else: r -= 1 while l < r and nums[r] == nums[r + 1]: r -= 1 return res
|