#11128. 三数之和

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: Turing001

题目描述

给你一个整数数组 a ,判断是否存在三元组 (a[i], a[j], a[k]) 满足 i != j、i != k 且 j != k ,同时还满足 a[i] + a[j] + a[k] == 0 。

请你返回所有和为 0 且不重复的三元组。若没有这样的三元组,请输出“No”。

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

输入格式

第一行,n,表示数组元素个数

第二行,n个整数

输出格式

所有和为 0 且不重复的三元组,一行一个三元组

样例

输入1:

6
-1 0 1 2 -1 -4

输出1:

-1 -1 2
-1 0 1

解释:

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

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

输入2:

3
0 1 1

输出2:

No

解释:唯一可能的三元组和不为 0 。

输入3:

3
0 0 0

输出3:

0 0 0

解释:唯一可能的三元组和为 0 。

数据范围与提示

3 <= n <= 3000

-10^5 <= a[i] <= 10^5