给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
1、解法一:O(m+n)
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length;
int n = nums2.length;
int len = m + n;
int left = -1;
int right = -1;
int start1 = 0;
int start2 = 0;
for(int i = 0;i < len/2 + 1 ;i++){
left = right;
if(start1 < m && (start2 >= n || nums1[start1] <= nums2[start2])){
right = nums1[start1++];
}else{
right = nums2[start2++];
}
}
if((len & 1) == 1){
return right;
}else{
return (left+right)/2.0;
}
}
执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:42.6 MB, 在所有 Java 提交中击败了17.27%的用户
通过测试用例:2094 / 2094