题目:两个正序数组,找出他们的中位数(中间位置的数),算法的时间复杂度应该为 O(log (m+n))。
1.将两个数组组成一个新的数组,
int[] allArry = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, allArry, 0, nums1.length);
System.arraycopy(nums2, 0, allArry, nums1.length, nums2.length);
2.将新数组中的元素排序(从小到大),
Arrays.sort(allArry);
3.用二分查找法,找出中位数
if (allArry.length % 2 == 0) {
int sum = allArry[allArry.length / 2] + allArry[(allArry.length / 2) - 1];
double result = sum / 2.;
return result;
} else {
double result = (double) allArry[allArry.length / 2];
return result;
}
标签:正序,中位数,length,allArry,result,数组,nums1
From: https://www.cnblogs.com/moon-new-star/p/18198977