我试图在两个数组中找到相同的元素,其中元素之间的最大距离必须等于 k。
我的两个数组(大小不同且未排序)A 和 B,k 最大距离。
这就是我所做的,但我不知道哪里有错误......
for (int i = 0; i<A.length; i++){
for(int j = i; j < k || j < B.length; j++)
if(A[i] == B[j]){
//Print on console
System.out.println(B[i]);
j = k;
}
}
}
例如:
A[3,7,5,9,10,15,16,1,6,2]
B[4,8,5,13,1,17,2,11]
k=6
输出应该是 5 1 2
,但我不知道为什么,我的程序只给我 5
。谁能帮我理解为什么?
最佳答案
for (int i = 0; i < A.length; i++) {
int startIndex = Math.max(i - k + 1, 0);
int endIndex = Math.min(i + k, B.length);
for (int j = startIndex; j < endIndex; j++){
if (A[i] == B[j]) {
System.out.println(B[j]);
}
}
}
呃,哦,不确定你想要的距离到底是多少,包括当前元素还是排除它。此外,重复项(在同一范围内)可能是需要处理的特殊情况。
关于java - 查找两个数组中相同的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18312426/