# 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

 

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:
[[-1,-1,2],[-1,0,1]]

示例 2:

输入:nums = []
输出:
[]

示例 3:

输入:nums = [0]
输出:
[]

 

提示:

## template ```python from typing import List class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: if len(nums) == 0: return [] result = [] unique = {} inv = {} left = None right = None nums.sort() i = 0 while i < len(nums): if left == None and nums[i] >= 0: left = i if right == None and nums[i] > 0: right = i inv[nums[i]] = i i += 1 if left == 0: right = len(nums) if right is None: return [] i = 0 while i < right: j = i+1 while j < len(nums) and (-nums[i] >= nums[j] * 2): last = 0-nums[i]-nums[j] k = inv.get(last) if k and k > j: list = [nums[i], nums[j], last] hash = f'{list[0]}_{list[1]}_{list[2]}' if unique.get(hash) is None: unique[hash] = True result.append(list) j += 1 i += 1 return result # %% s = Solution() print(s.threeSum(nums = [-1,0,1,2,-1,-4])) ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```