4. 寻找两个有序数组的中位数

class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int[] A = nums1;
        int[] B = nums2;
        int m = A.length;
        int n = B.length;
        if(m > n){
            int[] temp = A; A = B; B = temp;
            int tmp = m; m = n; n = tmp;
        }
        int iMin = 0, iMax = m, halflen = (m + n + 1) / 2;
        while (iMin <= iMax) {
            int i = (iMin + iMax) / 2;
            int j = halflen - i;
            if(i < iMax && A[i] < B[j-1]){
                iMin = i + 1;
            }else if(i > iMin && B[j] < A[i-1]){
                iMax = i - 1;
            }
            else{
                int leftMax = 0;
                if(i == 0){leftMax = B[j-1];}
                else if(j == 0){leftMax = A[i-1];}
                else{leftMax = Math.max(A[i-1], B[j-1]);}
                if((m + n) % 2 == 1){return leftMax;}
                
                int rightmin = 0;
                if(i == m){rightmin = B[j];}
                else if(j == n){rightmin = A[i];}
                else{rightmin = Math.min(A[i], B[j]);}
                
                return (leftMax + rightmin) / 2.0;
            }
        }
        return 0.0;
    }
}

4. 寻找两个有序数组的中位数