12/13
复杂度(n+m)
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n1=nums1.length;
int n2=nums2.length;
if(n1+n2==0){
return 0;
}
int st1=0;
int st2=0;
int st=0;
int[] nums=new int[n1+n2];
while(st!=n1+n2){
if(st1==n1){
nums[st++]=nums2[st2++];
}else if(st2==n2){
nums[st++]=nums1[st1++];
}else if(nums1[st1]<=nums2[st2]){
nums[st++]=nums1[st1++];
}else{
nums[st++]=nums2[st2++];
}
}
if((n1+n2)%2==0){
return (nums[(n1+n2-1)/2]+nums[(n1+n2)/2])/2.0;
}else{
return nums[(n1+n2)/2];
}
}
}
复杂度log(m+n0的做法晚点补

本文介绍了一种用于寻找两个已排序数组中位数的有效算法。该算法的时间复杂度为O(n+m),通过依次比较两个数组中的元素并将其合并到一个新的数组中来找出中位数。最后根据合并后数组的长度判断返回单个中位数或两个中间值的平均值。
446

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



