给定输入数组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]。有关如何实现此目标的任何提示。
1 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
为了实现您想要的输出,您需要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++)
添加回答
举报
0/150
提交
取消