# https://leetcode.cn/problems/3sum/ class Solution: def threeSum(self, nums: list[int]) -> list[list[int]]: n = len(nums) res = [] nums.sort() for i in range(n - 2): if i > 0 and nums[i] == nums[i - 1]: continue left, right = i + 1, n - 1 if nums[i] > 0 or nums[right] < 0: continue while left < right: sum = nums[i] + nums[left] + nums[right] if sum > 0: right -= 1 elif sum < 0: left += 1 continue if sum == 0: res.append([nums[i], nums[left], nums[right]]) left += 1 while left < right and nums[left - 1] == nums[left]: left += 1 right -= 1 while left < right and nums[right] == nums[right + 1]: right -= 1 return res if __name__ == "__main__": res = Solution().threeSum([-1, 0, 1, 2, -1, -4]) print(res)