我正在编写这个方法来查找 3 个数组中常见数字的数量(允许重复,例如,if A=[1,3,3,3,6], B=[3,3,1,5], C=[3,3,1,5,2]则方法应返回 3;两个 3 + 一个 1)。我用了3个for循环,但我觉得应该有更好的方法来做到这一点。
这是我的代码:
private static int common(int[] A, int[] B, int[] C)
{
int c=0;
List<Integer> visitedBs=new ArrayList<Integer>(), visitedCs=new ArrayList<Integer>();
for (int i = 0; i < A.length; i++)
outerloop:
for (int j = 0; j <B.length ; j++)
if (A[i]==B[j] && !visitedBs.contains(j))
for (int k = 0; k < C.length; k++)
if (B[j] == C[k] && !visitedCs.contains(k)) {
c++;
visitedBs.add(j);
visitedCs.add(k);
break outerloop;
}
return c;
}
有谁知道我应该如何降低时间复杂度?有没有办法用2个for循环代替?
慕的地6264312
小怪兽爱吃肉
慕田峪4524236
GCT1015
相关分类