gpt4 book ai didi

java - 比较两个数组。返回值错误(一)

转载 作者:行者123 更新时间:2023-12-01 06:34:47 26 4
gpt4 key购买 nike

我制作了这个方法,比较两个数组的数字,然后返回有多少个数字彼此相等,但无论有多少个数字相等,该方法每次都返回值1。(两个数组的长度相同)。

public static void main(String[] args) {
int a [] = {1, 4, 6, 7, 8, 10, 13};
int b [] = {1, 2, 3, 4, 5, 6, 7};

equal(a,b);

}


public static int equal(int[] a, int[] b){
int j = 0;
for(int i = 0; i< a.length-1;i++){

if(a[i] == b[i]){
j++;
}
}
System.out.println(j);
return j;
}

最佳答案

您的代码正在查找相同索引处的相等数字。

有多种方法可以找到交叉点的大小。

一个简单但 O(m*n) 的实现是为 a 的每个元素迭代 b 的所有元素。

如果数组已排序,您可以为两个数组使用单独的索引,当每个数组不再匹配时将其推进。这将是 O(m+n)。 (如果它们没有排序,您可以先对它们进行排序,成本为 O(m log m + n log n )。

如果每个数组没有重复的成员,另一种方法是根据集合差值的大小来计算交集的大小。一个例子是 http://ideone.com/6vLAfn 。关键部分是将每个数组转换为一个集合,并通过从另一个集合中删除一个集合来确定有多少个共同成员。

 int aSizeBefore = setA.size();
setA.removeAll( setB );
int aSizeAfter = setA.size();
return aSizeBefore - aSizeAfter;

关于java - 比较两个数组。返回值错误(一),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27063820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com