题目
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
链接
思路
先O(m+n)
ac了,过段时间再仔细看看二分解法。
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int l1=nums1.length;
int l2=nums2.length;
int[]nums=new int[l1+l2];
int i=0,j=0;
int idx=0;
while(i<l1||j<l2){
if(i==l1){
nums[idx]=nums2[j++];
}else if(j==l2){
nums[idx]=nums1[i++];
}else{
if(nums1[i]<=nums2[j]){
nums[idx]=nums1[i++];
}else{
nums[idx]=nums2[j++];
}
}
idx++;
}
int l=nums.length;
if((l&1)==1){
return nums[l/2];
}
return (nums[l/2-1]+nums[l/2])/2.0;
}
}