【问题标题】:ArrayList of ArrayList of Integers should not accept duplicatesArrayList of ArrayList of Integers 不应该接受重复
【发布时间】:2023-04-01 18:00:02
【问题描述】:

目标是在我的 Arraylist of Arraylist of Integers“listResults”中没有重复项。 这里我遍历一个元素列表“listOfElements”,如果这个列表中两个元素的总和等于目标,那么我将两个元素的索引存储在一个 ArrayList“对”中。然后我将该 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 中的。

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    您不应该检查已经访问过的元素。在你的内部 for 循环中,

    改变

    int j = 0;
    

    int j = i + 1;
    

    【讨论】:

      【解决方案2】:

      如果条件为真,使用break语句。

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 2019-05-05
        • 1970-01-01
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 2017-02-19
        相关资源
        最近更新 更多