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
Subscribe to see which companies asked this question.
好吧,评论区那个我没看懂,所以就自己搞了一个
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int i, j;
int count = 0;
int mid = (nums1.size() + nums2.size() + 1) / 2; //中位数
double a, b; //a存第N/2位,b存第N/2+1位,很重要
for (i = 0, j = 0; i<nums1.size() && j<nums2.size();) {
a = b;
if (nums1[i]>nums2[j]) {
b = nums2[j];
j++;
}
else {
b = nums1[i];
i++;
}
count++; //现在第几位
if (count == mid + 1) {
break;
}
}
if (count<mid + 1) {
if (i == nums1.size()) {
while (count<mid + 1) {
a = b;
b = nums2[j++];
count++;
}
}
else {
while (count<mid + 1) {
a = b;
b = nums1[i++];
count++;
}
}
}
if ((nums1.size() + nums2.size()) % 2 == 1) {
return a;
}
else {
return (double)(a + b) / 2;
}
}
};