例如:
int[] a = [0,1,2,3,4,5];
int[] b = [3,4,5,6,7,8];
count = 3;
数组不必是连续的数字。 如何获得这些数组之间相等的值的数量?
编辑:所以我尝试了以下内容:
List<int[]> w = Arrays.asList(winning);
List<int[]> s = Arrays.asList(F1Select);
w.retainAll(s);
int equalNums = w.size();
但是我为retainAll行收到以下错误:
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(Unknown Source)
at java.util.AbstractList$Itr.remove(Unknown Source)
at java.util.AbstractCollection.retainAll(Unknown Source)
答案 0 :(得分:3)
您只需转换为列表,然后使用retainAll找到交集。
List<Integer> aList = Arrays.asList(a);
List<Integer> bList = Arrays.asList(b);
aList.retainAll(bList);
return aList.size();
aList将只包含也在bList中的项目,aList的大小可以让你知道计数。
如果您只想要唯一值,则可以将数组转换为Set
并执行相同的操作。
答案 1 :(得分:1)
Integer[] a = new Integer[]{0, 1, 2, 3, 4, 5};
Integer[] b = new Integer[]{3, 4, 5, 6, 7, 8};
List<Integer> list1 = Arrays.asList(a);
Set<Integer> commonSet = new TreeSet<Integer>();
for (Integer i : b) {
if (list1.contains(i)) {
commonSet.add(i);
}
}
System.out.println(commonSet.size());
答案 2 :(得分:0)
如果允许您在计算期间使用O(m + n)
个额外空间,则可以为每个阵列保留一个HashMap。关键是每个数组元素,值是它出现的次数。一旦计算出每个数字出现的频率,就会将问题简化为比较两个数据。
每当两个映射中都存在一个键时,两个数组中都有一个数字。这些值可以让您确定两个数组中数字的存在次数。