作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个二维数组,我想找到一种更简单的方法来操作我的代码,以便它可以找到列中是否有重复项,并且比我下面的方法更简单:
for (int i=0; i < array.length; i++) {
for (int j=0; j < array.length; j++) {
for (int k=1; k < array.length; k++){
if (array[j+k][i] == array[j][i]) {
if (array[j][i] != 0) {
return true;
}
}
}
}
}
return false;
编辑:请指出以上 ^^ 也不会工作,因为它会抛出越界异常
这种方式有太多循环,我相信必须有一种更简单的方法来查找重复项,而不是经历这个庞大的循环过程。
这是一个方形二维数组,即。行数 = 列数的数组。
如果是这样,这种新方法如何工作 - 我如何操作它来查找行中的重复值。
感谢您的帮助。
最佳答案
您可以使用HashSet
来存储所有已经遇到的元素。应该是这样的:
static boolean noDupes(int[][] array) {
for (int i=0; i < array.length; i++) {
HashSet<Integer> set = new HashSet<Integer>();
for (int j=0; j < array.length; j++) {
if (set.contains(array[j][i])) return false;
set.add(array[j][i]);
}
}
return true;
}
这个解决方案是 O(length^2) = O(n),其中 n 是矩阵的总大小。我认为就大 O 而言它是理想的,因为您需要检查所有元素。
关于JAVA - 如何在二维数组的行和列中查找重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122315/
我是一名优秀的程序员,十分优秀!