【問題描述】
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問題來源:Median of Two Sorted Arrays
【問題分析】
【源代碼】
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> result;
int count = nums1.size() + nums2.size();
int i = 0;
int j = 0;
while (i < nums1.size() && j < nums2.size()) {
if (nums1[i] < nums2[j]) {
result.push_back(nums1[i]);
i++;
} else {
result.push_back(nums2[j]);
j++;
}
}
while(i < nums1.size()) {
result.push_back(nums1[i]);
i++;
}
while(j < nums2.size()) {
result.push_back(nums2[j]);
j++;
}
if (count == 0) {
return 0;
} else if (count % 2 == 0) {
return (result[count/2] + result[count/2 - 1]) / 2.0;
} else {
return (result[count/2]);
}
}
};
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
stack<int> result;
int count = nums1.size() + nums2.size();
int i= 0;
int j = 0;
while (i < nums1.size() || j < nums2.size()) {
if (i < nums1.size() && j < nums2.size()) {
if (nums1[i] < nums2[j]) {
result.push(nums1[i]);
i++;
} else {
result.push(nums2[j]);
j++;
}
} else {
if (j >= nums2.size()) {
result.push(nums1[i]);
i++;
} else {
result.push(nums2[j]);
j++;
}
}
if (result.size() > count / 2) {
if (count % 2 == 0) {
int number1 = result.top();
result.pop();
return (number1 + result.top())/2.0;
} else {
return result.top();
}
}
}
return 0;
}
};