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 pairsdefthreeSum(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 -=1left +=1right -=1elif total <0:left +=1else:right -=1return result