首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用性能最好的方法在两个数组中寻找公共元素

用性能最好的方法在两个数组中寻找公共元素
EN

Stack Overflow用户
提问于 2020-06-22 18:12:04
回答 1查看 501关注 0票数 0

实现一种方法,该方法检查整数数组参数1和整数数组参数2中是否存在整数,并以最佳性能打印搜索结果。方法参数是:(1)第一个整数数组和(2)与参数1相同大小的第二个整数数组;(3)要搜索的整数。

注意-考虑更好的性能意味着一个更好的执行方法需要更少的一般工作步骤来解决同样大小的数组的问题。您可能需要查看java.util.Arrays的Java页面。

我能够实现该解决方案,但我不确定它是否是性能最好的解决方案,因为我没有使用任何java.util.Arrays方法,因为我不确定需要使用哪个方法才能得到最佳答案。

代码语言:javascript
运行
复制
public static void findCommonElements(int[] arr1, int[] arr2, int num){

        for(int i = 0; i < arr1.length; i++){

            for(int j = 0; j < arr2.length; j++){

                if(arr1[i] == arr2[j] && arr1[i] == num){

                    System.out.println(num);

                }

            }
        }

    }

更新:i能够使用以下解决方案更新代码,该解决方案完全删除for循环并实现二进制以提高性能

代码语言:javascript
运行
复制
int[] arr1 = {7,8,5,1,2,3,6,7};
int[] arr2 = {9,8,6,4,1,2,4,5};
Arrays.sort(arr1);
Arrays.sort(arr2);

int index1 = Arrays.binarySearch(arr1, 5);
int index2 = Arrays.binarySearch(arr2, 5);
System.out.println(index1);
System.out.println(index2);

if(index1 < 0 || index2 < 0){
    System.out.println("number not found in both arrays");
}
else{
    System.out.println("number found in both arrays");
}
EN

回答 1

Stack Overflow用户

发布于 2020-06-22 19:24:25

可以使用流搜索数组:

代码语言:javascript
运行
复制
public static boolean findCommonElements(int[] arr1, int[] arr2, int num) {
    return Arrays.stream(arr1).anyMatch(x -> x == num) &&
           Arrays.stream(arr2).anyMatch(x -> x == num);
}

类似的方法使用Integer数组中的线性搜索,使用Arrays.asList来转换数组:

代码语言:javascript
运行
复制
public static boolean findCommonElements(Integer[] arr1, Integer[] arr2, int num) {
    return Arrays.asList(arr1).indexOf(num) > -1 &&
           Arrays.asList(arr2).indexOf(num) > -1;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62520851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档