实现一种方法,该方法检查整数数组参数1和整数数组参数2中是否存在整数,并以最佳性能打印搜索结果。方法参数是:(1)第一个整数数组和(2)与参数1相同大小的第二个整数数组;(3)要搜索的整数。
注意-考虑更好的性能意味着一个更好的执行方法需要更少的一般工作步骤来解决同样大小的数组的问题。您可能需要查看java.util.Arrays的Java页面。
我能够实现该解决方案,但我不确定它是否是性能最好的解决方案,因为我没有使用任何java.util.Arrays方法,因为我不确定需要使用哪个方法才能得到最佳答案。
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循环并实现二进制以提高性能
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");
}发布于 2020-06-22 19:24:25
可以使用流搜索数组:
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来转换数组:
public static boolean findCommonElements(Integer[] arr1, Integer[] arr2, int num) {
return Arrays.asList(arr1).indexOf(num) > -1 &&
Arrays.asList(arr2).indexOf(num) > -1;
}https://stackoverflow.com/questions/62520851
复制相似问题