为了账号安全,请及时绑定邮箱和手机立即绑定

可整除的和对

可整除的和对

有只小跳蛙 2023-07-19 15:56:47
给定输入数组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++)


查看完整回答
反对 回复 2023-07-19
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信