简述
给定两个有序数组,且其中一个有序数组的最大值小于等于另外一个数组的最小值。
得到这两个数组整合起来的数组的中位数。
代码
#include<iostream>
using namespace std;
#include<vector>
double findMedianTwoSortArrays(vector<int>& nums1, vector<int>& nums2) {
// assert "nums1[n] <= nums2[0]"
int n = nums1.size(), m = nums2.size();
if ((n + m) % 2 == 1) {
int mid = (n + m) / 2;
if (n <= mid) {
return nums2[mid - n];
}
else return nums1[mid];
}
else {
int m1 = (n + m) / 2 - 1, m2 = (n + m) / 2 ;
int n1, n2;
if (n <= m1) {
n1 = nums2[m1 - n];
}
else n1 = nums1[m1];
if (n <= m2) {
n2 = nums2[m2 - n];
}
else n2 = nums1[m2];
cout << n1 << " " << n2 << endl;
return (n1 + n2) / 2.;
}
}
int main() {
vector<int> v1({ 1, }), v2({3, 4,});
cout << findMedianTwoSortArrays(v1, v2) << endl;
system("pause");
}