问题描述
团队,在参考 StackOverflow 上的各种帖子后,我仍然无法确定以下问题的解决方案(有点不同和复杂)
任何帮助找到解决方案/算法(最好是在 JAVA 中)将不胜感激。
问题陈述:
考虑一组 N 个组,每个组在一维空间中具有一定数量的点。每个点由其在一条线上的坐标表示。
编写一个程序,从每组中选择一个点形成一个新集合,使得新集合中第一个和最后一个点之间的距离尽可能小。
输入: N 组整数。
例如:
- [21,1,150,289,-321]
- [160,3,30]
- [170,22,6,7]
输出: 新形成的整数集。
例如: [1,6]
假设:输入可以是标准的内联输入,也可以是一个文件,其中 N 行代表 N 个集合。 最终,输入是 N 组协调器点/整数。
测试用例:
测试 1
测试输入
- 21、1、150、289、-321
- 160、3、30
- 170、22、6、7
预期输出: 1、3、6
测试 2
测试输入
- -24、-77、89、29、-3
- 187,-99,1
预期输出: -3,1
测试 3
测试输入
- 6、19、95、76、24
- 79、53、2、9、16、91、73
- 81、14、65
- 22、60、37、32、99、71
预期输出: 14、16、19、22
测试 4
测试输入
- -26 7 89 38 83 -90 87 87 59 66 0 81 -51 -45
- -52 23 37 -7 -16 -46 70 21 18 77
- -32 77 -47 -15 86 -5 38
- 64 32 53 78 -90 74 1 51 23 -95 -5 92 10 34 92 -70 37 -8 9 -64
- 4 74 87 -27 66 6 31 49 11 -59 91 98 59 -60 41 58 48 2 -1 90 23 -89 -45 -37 29 22 -66 -87
- 86 -69 0 -36 -43 33 -57 -44 21 28 -51 33 27 -56 43 -29 -33 -46 22 30 50 39 100
- -55 -40 40 30 89 -45 3 -34 -30 16 33 14 -98 -4 54 28 -14 11
预期输出: 37 37 38 38 39 40 41
解决方法
所以,首先,不要只提供您的任务,让我们为您提供解决方案。这不是 Stack Overflow 的工作方式。
假设你不知道你需要做什么,我可以给你一个你可以做什么的指南。 (我没有尝试自己编写代码,这只是我想尝试创建的内容)
- (读取输入)
- 找出第一组中的最小值并保存该值
- 循环,从第一组开始,遍历每一组
- 在您的循环中,开始另一个循环,检查小组中的每个点
- 检查当前点是否等于您从上面保存的值
- 如果是,请转到下一组并将您的值添加到列表中
- 如果不是,请在您保存的值上加 1,然后继续下一点
- 当你的两个循环都完成后,你打印列表中的值