
Leetcode-004-寻找两个正序数组的中位数
寻找两个正序数组的中位数
最朴实的方法,数组合并用 sort 排序,然后找出中位数:
import java.util.ArrayList;
import java.util.Collections;
public class FindMedianSortedArrays {
public static void main(String[] args) {
int[] arr1 = new int[]{};
int[] arr2 = new int[]{};
float res = findMedianSortedArrays(arr1,arr2);
System.out.println("中位数为"+res);
}
public static float findMedianSortedArrays(int[] nums1, int[] nums2) {
ArrayList<Integer> arr = new ArrayList<>();
for (int i : nums1) {
arr.add(i);
}
for (int i : nums2) {
arr.add(i);
}
Collections.sort(arr);
float res = 0;
int length = arr.size();
int mid;
if (length==0){
return 0;
}else if (length%2==1){
mid = arr.size()/2;
res = arr.get(mid);
}else {
mid = arr.size()/2;
res = arr.get(mid) + arr.get(mid-1);
res = res/2;
}
return res;
}
}
但是
要求时间复杂度为 O(log (m+n))
所以需要使用——归并排序法