美文网首页
4. Median of Two Sorted Arrays

4. Median of Two Sorted Arrays

作者: 刘小小gogo | 来源:发表于2018-08-23 22:33 被阅读0次
image.png

参考:https://hk029.gitbooks.io/leetbook/content/%E5%88%86%E6%B2%BB/004.%20Median%20of%20Two%20Sorted%20Arrays[H]/004.%20Median%20of%20Two%20Sorted%20Arrays[H].html

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int n1 = nums1.size();
        int n2 = nums2.size();
        if(n1 == 0) return helper(nums2);
        if(n2 == 0) return helper(nums1);
        if(n1 > n2) return findMedianSortedArrays(nums2, nums1);
        int L1, L2, R1, R2, C1, C2, low = 0, high = 2 * n1;
        while(low <= high){
            C1 = (low + high) / 2;
            C2 = n1 + n2 - C1;
            L1 = C1 == 0 ? INT_MIN : nums1[(C1 - 1) / 2];
            R1 = C1 == n1 * 2 ? INT_MAX : nums1[C1 / 2];
            L2 = C2 == 0 ? INT_MIN : nums2[(C2 - 1) / 2];
            R2 = C2 == n2 * 2 ? INT_MAX : nums2[C2 / 2];
            if(L1 > R2) high = C1 - 1;
            else if(L2 > R1) low = C1 + 1;
            else break;
        }
        return (max(L1, L2) + min(R1, R2)) / 2.0;
    }
private:
    double helper(vector<int> nums){
        if(nums.size() == 0) return -1;
        return (nums[(nums.size())/2] + nums[(nums.size() - 1)/2]) / 2.0;
    }
};

相关文章

网友评论

      本文标题:4. Median of Two Sorted Arrays

      本文链接:https://www.haomeiwen.com/subject/sxrviftx.html