classSolution(object):deftwoSum(self, nums, target):"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
seen =set()# 用于存储已经访问过的数字
pairs =[]for num in nums:
complement = target - num # 计算当前数字的补数if complement in seen:# 检查补数是否已经在集合中
pairs.append(sorted([complement, num]))# 如果存在,添加到结果中
seen.add(num)# 将当前数字添加到集合中return pairs
defthreeSum(self, nums):"""
寻找数组中所有和为0的不重复三元组。
:param nums: 输入的整数数组
:type nums: List[int]
:return: 返回所有满足条件的三元组列表
:rtype: List[List[int]]
"""# 输入验证ifnotisinstance(nums,list)ornotall(isinstance(x,int)for x in nums):raise ValueError("输入必须是整数列表")# 边界条件处理iflen(nums)<3:return[]# 对数组进行排序
nums.sort()
result =[]# 遍历数组,寻找三元组for i inrange(len(nums)-2):# 跳过重复元素if i >0and nums[i]== nums[i -1]:continue# 使用双指针寻找两数之和
left, right = i +1,len(nums)-1while left < right:
total = nums[i]+ nums[left]+ nums[right]if total ==0:
result.append([nums[i], nums[left], nums[right]])# 跳过重复元素while left < right and nums[left]== nums[left +1]:
left +=1while left < right and nums[right]== nums[right -1]:
right -=1
left +=1
right -=1elif total <0:
left +=1else:
right -=1return result