leet code两个排序数组的中位数

leet code两个排序数组的中位数

 double findMedianSortedArrays(vector<int>& num1, vector<int>& num2) {
           if (num1.size()>num2.size()) {
		return findMedianSortedArrays(num2, num1);
	}
	int key = (num1.size() + num2.size() - 1) / 2;
	int left = 0;
	int right = min((int)num1.size(), key);
	while (left<right) {
		int mid1 = (left + right) / 2;
		int mid2 = key - mid1;
		if (num1[mid1]<num2[mid2]) {
			left = mid1 + 1;
		}
		else {
			right = mid1;
		}
	}

	int odd = max(left>0 ? num1[left - 1] : INT_MIN, key - left >= 0 ? num2[key - left] : INT_MIN);
	if((num1.size()+num2.size())%2==1)return odd;
       
    int even = min(left<num1.size() ? num1[left] : INT_MAX, key - left +1 < num2.size()? num2[key - left + 1] : INT_MAX); 
    return (double)(odd+even)/2;
    }