java
4. 寻找两个正序数组的中位数
已解答
困难
相关标签
相关企业
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
这题的时间复杂度显然需要二分,没什么思路,题解一大堆字又是复杂题懒得看了。LeetCode对时间复杂度的校验根本不严格,写了个O(m+n)的也通过了。
java
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n1=nums1.length, n2=nums2.length;
int[] num = new int[n1+n2];
int i=0,j=0,k=0;
while(i<n1&&j<n2){
if(nums1[i]<nums2[j]){
num[k++]=nums1[i++];
}else{
num[k++]=nums2[j++];
}
}
while(i < n1){
num[k++]=nums1[i++];
}
while(j < n2){
num[k++]=nums2[j++];
}
//System.out.println(k);
if(k%2 ==0){
return (num[k/2]+num[k/2-1])/2.0;
} else{
return num[k/2];
}
}
}