给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n))
。
class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int i = 0; int j = 0; int all = 0; int[] nums = new int[2000]; while (i < nums1.length && j < nums2.length) { if (nums1[i] <= nums2[j]) { nums[all] = nums1[i]; all++; i++; } else { nums[all] = nums2[j]; all++; j++; } } if (i == nums1.length) { //如果是nums1走到了尽头,就把nums2的数直接加到最后 for (int k = j; k < nums2.length; k++) { nums[all] = nums2[k]; all++; } } if (j == nums2.length) { //如果是nums1走到了尽头,就把nums2的数直接加到最后 for (int k = i; k < nums1.length; k++) { nums[all] = nums1[k]; all++; } } int m1 = (nums1.length + nums2.length-1)/2; int m2 = (nums1.length + nums2.length)/2; double middle1 = (double)(nums[m1] + nums[m2])/2; return middle1; } }