java - 检查不同的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]);
}
解决方案
为了检查重复项,您必须使用另一个数据结构来跟踪您已经看到的值。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 是您要插入的实际值。
推荐阅读
- python - 如何通过 python Lambda 询问物联网设备
- oracle-apex - Apex 分面搜索自动生成行 nuber
- multithreading - 工作流系统与多线程解决 lambda 超时限制
- restful-url - 如果 API 不是纯粹做 CRUD,如何命名 RESTful 地址
- azure - 系统分配的托管标识的 Azure ARM 角色分配第一次运行失败
- angular - 打字稿输入问题,Observable.next 方法未正确输入
- php - Laravel 8 - 干预/图像 - 未定义类型“图像”
- javascript - 从 iframe 传递 URL 参数
- r - 如何通过匹配来自另一个数据帧的整个列中的字符串来检索一个数据帧中的值?
- apache-kafka - 我应该如何将 clickhouse 连接到 Kafka?