目标是在我的整数数组列表“listResults”的数组列表中没有重复项。 在这里,我迭代元素列表“listOfElements”,如果此列表中两个元素的总和等于目标,则我将两个元素的索引存储在 ArrayList“对”中。然后我将该 ArrayList 添加到 ArrayList“listResults”列表中并继续迭代。 最后,我可能会得到包含一个或多个 arrayList 的 listResults。但是我不希望它包含重复项,例如 [2,3] 和 [3,2] 或 [4,0] 和 [0,4]
int target = 60;
ArrayList<ArrayList<Integer>> listResults = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> listOfElements = new ArrayList<Integer>();
listOfElements.add(1);
listOfElements.add(10);
listOfElements.add(25);
listOfElements.add(35);
listOfElements.add(60);
for (int i = 0; i < listOfElements.size(); i++) {
for (int j = 0; j < listOfElements.size(); j++) {
if (listOfElements.get(i) + listOfElements.get(j) == target) {
ArrayList<Integer> pair = new ArrayList<Integer>();
pair.add(i);
pair.add(j);
listResults.add(pair);
}
}
}
System.out.println(listResults);
根据当前代码,输出为:[ [2,3] , [3,2] ] 但这是 Not Acceptable ,因为 [2,3] 和 [3,2] 是重复的。只应允许 [2,3],因为它是第一个添加到 ArrayList 中的。
最佳答案
您不应该检查已经访问过的元素。在你的内部 for 循环中,
改变
int j = 0;
至
int j = i + 1;
关于java - ArrayList of Integers 的 ArrayList 不应接受重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57085533/