目标是在我的整数数组列表“ listResults”的数组列表中没有重复项。 在这里,我遍历元素列表“ listOfElements”,如果该列表中两个元素的总和等于目标,则将两个元素的索引存储在ArrayList“ pair”中。然后,我将该ArrayList添加到ArrayList“ listResults”的列表中并继续进行迭代。 最后,我可能会得到包含一个或多个arrayLists的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]],但这是不可接受的,因为[2,3]和[3,2]是重复项。应该只允许[2,3],因为它是要添加到ArrayList的第一个。
答案 0 :(得分:2)
您不应检查已访问的元素。在您的内部for循环中,
更改
int j = 0;
到
int j = i + 1;
答案 1 :(得分:0)
如果条件为真,请使用break语句。