给定输入数组ar = [1,2,3,4,5]
和k=5
,找到可整除的和对,使得输入数组中的元素在相加时给出结果k
。
示例输出 - 在这种情况下满足条件的三对是[1,4], [2,3], and [4,6]
.
这是我的代码 -
public class DivisibleSumPairs {
public static void main(String[] args) {
int[] inputArr = new int[] {1,2,3,4,5,6};
List<Integer> output = divisibleSumPairs(inputArr, 5);
System.out.println(Arrays.toString(output.toArray()));
}
public static List<Integer> divisibleSumPairs(int[] inputArr, int input) {
List<Integer> output = null;
List<Integer> outputLst = new ArrayList<Integer>();
for (int i = 0; i < inputArr.length; i++) {
for (int j = 1; j < inputArr.length; j++) {
if ((inputArr[i] + inputArr[j]) % input == 0) {
output = new ArrayList<Integer>(2);
output.add(inputArr[i]);
output.add(inputArr[j]);
outputLst.addAll(output);
}
}
}
return outputLst;
}
}
我的代码的输出结果是 -[1, 4, 2, 3, 3, 2, 4, 6, 5, 5, 6, 4]
虽然我想将它分组为具有两个元素的子数组 - [1,4], [2,3], and [4,6]
。关于如何实现这一目标的任何提示。
要实现所需的输出,您需要List<List<Integer>>
而不是List<Integer>
. 因此,您应该替换以下行:
List<Integer> outputLst = new ArrayList<Integer>();
和
List<List<Integer>> outputLst = new ArrayList<>();
在循环中,替换以下行:
outputLst.addAll(output);
和:
outputLst.add(output);
我刚刚意识到for
由于逻辑错误,您还需要更新嵌套循环。从:
for (int j = 1; j < inputArr.length; j++)
到:
for (int j = i+1; j < inputArr.length; j++)
您可以在此处查看工作代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句