【发布时间】:2016-01-19 00:24:06
【问题描述】:
我有像这样的二维数组:
{2 , 6 , 46, 8 , 7 , 25, 64 , 9 , 10},
{6 , 10, 50, 12, 11, 29, 68 , 13, 14},
{46, 50, 90, 52, 51, 69, 108, 53, 54}
我怎样才能找到像'6', '46' and '50'这样的重复元素?
我的代码发现连续重复:
for (int i = 0; i < a2.length; i++) {
for (int j = 0; j < a2[i].length; j++) {
cursor = a2[i][j];
if(j + 1 < a2[i].length){
if(cursor == a2[i][j + 1]){
System.out.println(cursor + "has duplicate in this array");
}
}
}
}
【问题讨论】:
-
如果要删除重复元素,请将所有数字放入一个 Set 中。
-
您要打印重复元素还是查找您的数组是否包含重复元素
-
j的范围不是 0 到a.length。它应该是 0 到a[i].length。此外,此代码未找到通用重复项。它只寻找连续的重复项。这是你的意图吗? -
我要查找通用重复项
-
查找通用重复项的通用方法是:对于每个元素,查看它是否与元素的任何 rest 匹配。所以你的
for循环需要这样做。您当前的循环不断更改您正在比较的条目与当前条目。比较 rest 元素的 all 时,需要保持稳定。顺便说一句,在您显示的代码中,您添加了我的更正,但忽略了我认为您会接受的其他相关更正:if ( j + 1 < a[i].length )将替换if ( j + 1 < a.length )。如果你想让它工作,你真的需要仔细考虑你的代码。
标签: java arrays loops multidimensional-array duplicates