LeetCode 4: 寻找两个有序数组的中位数(Median of Two Sorted Arrays)解法汇总
程序员文章站
2022-05-14 20:19:45
...
我的C++代码同步更新在我的Github
我的解法
这是一道很简单的两个有序向量的二路归并问题。直接上代码。
C++
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
double res;
vector<int> merged;
for (int i = 0, j = 0; i < nums1.size() || j < nums2.size();) {
if ( i < nums1.size() && (j >= nums2.size() || nums1[i] < nums2[j]) ) {
merged.push_back(nums1[i++]);
}
if ( j < nums2.size() && (i >= nums1.size() || nums1[i] >= nums2[j]) ) {
merged.push_back(nums2[j++]);
}
}
if (merged.size() % 2) {
res = static_cast<double>(merged[merged.size() >> 1]);
}
else {
res = static_cast<double>(merged[merged.size() >> 1] + merged[(merged.size() >> 1) - 1]) / 2;
}
return res;
}
};