給定輸入數組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
提交
取消