Java 从两个数组中查找最大元素
我需要从两个数组中找到最大元素Java 从两个数组中查找最大元素,java,Java,我需要从两个数组中找到最大元素 int arr1[]={20,65,23056,67,678}; int arr2[]={76,23,4545,98,90909}; 我的代码给出了输出,但我认为它的复杂性很高。下面是我的代码。它是好的还是需要改进 int arr1[]={20,65,23056,67,678}; int arr2[]={76,23,4545,98,90909}; int len1=arr1.length; int len2=arr2.lengt
int arr1[]={20,65,23056,67,678};
int arr2[]={76,23,4545,98,90909};
我的代码给出了输出,但我认为它的复杂性很高。下面是我的代码。它是好的还是需要改进
int arr1[]={20,65,23056,67,678};
int arr2[]={76,23,4545,98,90909};
int len1=arr1.length;
int len2=arr2.length;
int max1=arr1[0];
for(int i=0;i<len1;i++){
if(arr1[i]>max1){
max1=arr1[i];
}
}
int max2=arr2[0];
for(int j=0;j<len2;j++){
if(arr2[j]>max2){
max2=arr2[j];
}
}
if(max1>max2){
System.out.print("max element is:"+max1);
}
else{
System.out.print("Max element is: "+max2);
}
输出:-90909试试这个
Integer arr1[]={20,65,23056,67,678};
Integer arr2[]={76,23,4545,98,90909};
Integer max = Stream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).max(Comparator.comparing(Integer::valueOf)).get();
如果我们将第一和第二数组的长度分别看作是n和m。您的解决方案具有On+m的复杂性。这是最好的情况,因为数组没有排序 您可以使用Java streams来实现这一点。如果要避免将值装箱为整数,并且要直接获取基元整数,请使用和:
即使您不想处理流,您仍然可以对其进行一些改进: int arr1[]={20,65,23056,67,678}; int arr2[]={76,23,4545,98,909}; int len=arr1.length>arr2.length?arr1.length:arr2.length; int max=0; 对于int i=0;i
这里的其他答案侧重于流,这是非常好的,并且是可以接受的 但是,如果您对流JDK 7及更早版本的使用有限制,则可以将数组放在带有Collections.reverseOrder的树集中,以便按降序对元素进行排序。第0个索引将是数组并集中的最大或mac元素
编辑:请注意,TreeSet不会持久保存重复项,因此您比将重复项存储在数组中要好。在最坏的情况下,如果两个包含5个元素的数组各包含9个重复元素,那么TreeSet将只包含2个元素—唯一的一个元素,另一个元素是重复元素,而两个数组包含10个元素。这里有什么问题?代码没有问题。一个可能的改进是:创建一个方法来查找数组的max元素,然后对两个数组调用该方法两次-这样可以避免复制和粘贴代码来查找max元素。
int[] arr1 = {20, 65, 23056, 67, 678};
int[] arr2 = {76, 23, 4545, 98, 90909};
int max = IntStream
.concat(IntStream.of(arr1), IntStream.of(arr2))
.max()
.getAsInt();