首页 > 解决方案 > 检查不同的arraylists中是否有重复的数字

问题描述

我是这种语言的新手,我正在尝试创建一个二维数组,然后循环遍历它并获取列(我得到了这部分),我已将数字放在 arraylists 内的列中。但我想知道是否有办法检查这些数组列表以查看其中是否有重复的数字。例如:

row0:   9-8-7-6-5
row1:   4-3-2-1-0
row2:   1-9-8-4-3

所以如果column2中有重复的数字:8 3 9和column1:9 4 1。重复的数字是9。所以打印出数字和列号。

ArrayList<Integer> column0 = new ArrayList<Integer>();
ArrayList<Integer> column1 = new ArrayList<Integer>();
ArrayList<Integer> column2 = new ArrayList<Integer>();
ArrayList<Integer> column3 = new ArrayList<Integer>();
ArrayList<Integer> column4 = new ArrayList<Integer>();

int[][] arrays = new int[][]{
        {top1, top2, top3, top4, top5},
        {mid1, mid2, mid3, mid4, mid5},
        {bot1, bot2, bot3, bot4, bot5}};

for (int i = 0; i < arrays.length; i++) {
    column0.add(arrays[i][0]);
    column1.add(arrays[i][1]);
    column2.add(arrays[i][2]);
    column3.add(arrays[i][3]);
    column4.add(arrays[i][4]);
}

标签: javaarraylistmultidimensional-array

解决方案


为了检查重复项,您必须使用另一个数据结构来跟踪您已经看到的值。Set 将是一个完美的候选者,因为您可以在 O(1) 复杂度中查找任何元素。

你的代码应该是这样的

Set<Integer> seen;
List<List<Integer>> lists;
public void add(int index, int value) {
    if(!set.contains(value) {
        lists.get(index).add(value);
    }
}

在这里, index 是您的 2D 列表中的行,而 value 是您要插入的实际值。


推荐阅读