Median of two sorted array

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)).

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

 
 
class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        vector<int> temp;
        int len1=nums1.size();
        int len2= nums2.size();
        int idx = (len1+len2)/2+1;//需要存放idx个数
        int i =0,j=0;
        int size = 0;
        if(len1 ==0 && len2==0) return 0.0;
        while(size != idx) //当idx==size的时候退出
        {
            if(i == len1 && j<len2)//1遍历完了还没有找到
            {
                temp.push_back(nums2[j]);
                j++;
            }
            else if(i < len1 && j==len2)//2遍历完了还没有找到
            {
                temp.push_back(nums1[i]);
                i++;
            }
            else if(i < len1 && j<len2)//1和2都没有遍历完
            {
                if(nums1[i]<=nums2[j]){
                    temp.push_back(nums1[i]);
                    i++;
                }
                else
                {
                    temp.push_back(nums2[j]);
                    j++;
                }
            }
            size = temp.size();
        }
        if((len1+len2)%2 == 1) return (double)temp[idx-1];
        else return (double)(temp[idx-1]+temp[idx-2])/2;
    }
};



猜你喜欢

转载自blog.csdn.net/B1009/article/details/63714157