4.寻找两个正序数组的中位数
题目大意
给定两个升序数组,求这两个数组的中位数
解题思路
按照归并排序的思路,将两个数组进行归并,在归并后的数组中直接寻找中位数。
code
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length, n = nums2.length;
double [] nums3 = new double[2005];
int l1=0,l2=0,l3=0;
while(l1<m && l2<n){
while(l1<m&&(nums1[l1]<nums2[l2]))
nums3[l3++]=nums1[l1++];
while((l1<m&&l2<n)&&(nums1[l1]>nums2[l2]))
nums3[l3++]=nums2[l2++];
if((l1<m&&l2<n)&&(nums1[l1]==nums2[l2])){
nums3[l3++]=nums1[l1++];
nums3[l3++]=nums2[l2++];
}
}
while(l1<m)
nums3[l3++]=nums1[l1++];
while(l2<n)
nums3[l3++]=nums2[l2++];
if(l3%2==1){
return nums3[l3/2];
}
else{
return (nums3[l3/2]+nums3[l3/2-1])/2.0;
}
}
}