猿问

可整除的和对

给定输入数组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]。有关如何实现此目标的任何提示。


有只小跳蛙
浏览 103回答 1
1回答

慕神8447489

为了实现您想要的输出,您需要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++)
随时随地看视频慕课网APP

相关分类

Java
我要回答