CodeACM
HOT 100 · 双指针 · LC 15

三数之和:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

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

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

输入格式

第一行包含一个整数 n,表示数组长度。

第二行包含 n 个整数 nums[i],相邻数字以空格分隔。

输出格式

输出所有和为 0 且不重复的三元组,每行输出一个三元组的三个整数,数字之间以空格分隔。

若不存在满足条件的三元组,则输出为空。

输出的顺序和三元组内部的顺序不作要求。

数据范围

  • 3 ≤ n ≤ 3000
  • −10⁵ ≤ nums[i] ≤ 10⁵

公开样例

样例 1

输入

6
-1 0 1 2 -1 -4

输出

-1 -1 2
-1 0 1

不同的三元组是 [-1, -1, 2] 和 [-1, 0, 1],输出顺序不作要求。

样例 2

输入

3
0 1 1

输出

不存在和为 0 的三元组,因此输出为空。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。