There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
You may assume nums1 and nums2 cannot be both empty.
Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
classSolution {publicdoublefindMedianSortedArrays(int[] A,int[] B) {int m =A.length;int n =B.length;if (m > n) { // to ensure m<=nint[] temp = A; A = B; B = temp;int tmp = m; m = n; n = tmp; }// The Binary search is of partitionsint iMin =0, iMax = m, halfLen = (m + n +1) /2;while (iMin <= iMax) {int i = (iMin + iMax) /2;int j = halfLen - i;if (i < iMax &&B[j-1] >A[i]){ iMin = i +1; // i is too small }elseif (i > iMin &&A[i-1] >B[j]) { iMax = i -1; // i is too big }else { // i is perfectint maxLeft =0;if (i ==0) maxLeft =B[j-1];elseif (j ==0) maxLeft =A[i-1];else maxLeft =Math.max(A[i-1],B[j-1]);if ( (m + n) %2==1 )return maxLeft;int minRight =0;if (i == m) minRight =B[j];elseif (j == n) minRight =A[i];else minRight =Math.min(B[j],A[i]);return (maxLeft + minRight) /2.0; } }return0.0; }}