#P4005. 三数之和

三数之和

题目内容

给你一个整数数组numsnums ,判断是否存在三元组 [nums[i],nums[j],nums[k]][nums[i], nums[j], nums[k]] 满足 i!=ji != ji!=ki != kj!=kj != k ,同时还满足 nums[i]+nums[j]+nums[k]==0nums[i] + nums[j] + nums[k] == 0 。请你输出所有和为 00 且不重复的三元组。

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

输入描述

输入共两行。

  • 第一行为两个个整数ntargetn,target,代表数组numsnums的长度和目标值。

  • 第二行为nn个整数nums0,nums1,...,numsn1nums_0,nums_1,...,nums_{n-1},数字之间以空格分隔。

输出描述

输出所有满足条件的三元组。 每行代表一个三元组。三元组的数字之间以空格分隔。

样例1

输入

6 
-1 0 1 2 -1 -4

输出

-1 -1 2
-1 0 1

说明

nums[0]+nums[1]+nums[2]=(1)+0+1=0nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0

nums[1]+nums[2]+nums[4]=0+1+(1)=0nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0

nums[0]+nums[3]+nums[4]=(1)+2+(1)=0nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0

不同的三元组是 [1,0,1][-1,0,1][1,1,2][-1,-1,2]

注意,输出的顺序和三元组的顺序并不重要。

样例2

输入

3
0 1 1

输出

说明

唯一可能的三元组和不为 00

样例3

输入

3
0 0 0

输出

0 0 0

说明

唯一可能的三元组和为 00

提示

  • 3<=nums.length<=30003 <= nums.length <= 3000
  • 105<=nums[i]<=105-10^5 <= nums[i] <= 10^5