首页 > 试题广场 >

不重复打印排序数组中相加和为给定值的所有三元组

[编程题]不重复打印排序数组中相加和为给定值的所有三元组
  • 热度指数:12712 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定排序数组arr和整数k,不重复打印arr中所有相加和为k的严格升序的三元组
例如, arr = [-8, -4, -3, 0, 1, 1, 2, 4, 5, 8, 9], k = 10,打印结果为:
-4 5 9
-3 4 9
-3 5 8
0 1 9
0 2 8
1 4 5
其中三元组1 1 8不满足严格升序所以不打印
[要求]
时间复杂度为空间复杂度为


输入描述:
第一行有两个整数n, k
接下来一行有n个整数表示数组内的元素


输出描述:
输出若干行,每行三个整数表示答案
按三元组从小到大的顺序输出(三元组大小比较方式为每个依次比较三元组内每个数)
示例1

输入

10 10
-8 -4 -3 0 1 2 4 5 8 9

输出

-4 5 9
-3 4 9
-3 5 8
0 1 9
0 2 8
1 4 5
示例2

输入

11 10
-8 -4 -3 0 1 1 2 4 5 8 9

输出

-4 5 9
-3 4 9
-3 5 8
0 1 9
0 2 8
1 4 5
示例3

输入

11 10
-8 -4 -3 0 1 1 2 4 4 8 9

输出

-3 4 9
0 1 9
0 2 8

备注:

这道题你会答吗?花几分钟告诉大家答案吧!