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

好吧 我用的O(n)的

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int n = nums1.size(), m = nums2.size();
        int mid = (n + m) / 2;
        if(n == 0 && m == 0) return 0;
        int i = 0, j = 0;
        int cnt = 0, x = 0, y = 0;
        while(i < n || j < m)
        {
            if((i < n && j < m && nums1[i] < nums2[j]) || (i < n && j >= m) )
            {
                
                if(((n + m) % 2 == 0) && cnt == mid - 1)
                {
                    x = nums1[i];
                }
                if(cnt == mid) y = nums1[i];
                i++;
                cnt++;
            }
            else if(j < m)
            {
                if(((n + m) % 2 == 0) && cnt == mid - 1)
                {
                    x = nums2[j];
                }
                if(cnt == mid) y = nums2[j];
                j++;
                cnt++;
            }
        }
        if((n + m) & 1) x = y;
        return (x + y) / 2.0;

    }
};

 

posted @ 2022-03-20 23:23  WTSRUVF  阅读(17)  评论(0编辑  收藏  举报