There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
public class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int i=0,j=0;
int size=(nums1.length+nums2.length);
int[] temp=new int[size/2+1];
boolean flag=false;
if((nums1.length+nums2.length)%2==0)
flag=true;
int k=0;
while(i<nums1.length&&j<nums2.length){
if(nums1[i]<nums2[j]){
temp[k++]=nums1[i++];
}else{
temp[k++]=nums2[j++];
}
if(k==size/2+1){
if(flag)return (temp[k-1]+temp[k-2])*100/100.0/2.0;
else return temp[k-1];
}
}
while(k<=size/2){
while(k<=size/2&&i<nums1.length)
temp[k++]=nums1[i++];
while(k<=size/2&&j<nums2.length)
temp[k++]=nums2[j++];
}
if(flag)return ((temp[k-1]+temp[k-2])*100)/100.0/2.0;
else return temp[k-1];
}
}
本文介绍了一种寻找两个有序数组中位数的方法,确保整体运行时间复杂度为O(log(m+n))。通过实例演示了如何实现该算法。
665

被折叠的 条评论
为什么被折叠?



