4. 寻找两个正序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/
参考了合并两个有序链表的思想。
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int length1 = nums1.size();
int length2 = nums2.size();
int sum = length2 + length1;
int k = sum / 2 + 1;
int i = 0;
int j = 0;
vector<int> res;
while (i < length1 && j < length2){
if (nums1[i] <= nums2[j]){
res.push_back(nums1[i]);
i++;
} else{
res.push_back(nums2[j]);
j++;
}
if (res.size() == k){
if (sum % 2 == 0){
// pop_back
int a = res.back();
res.pop_back();
return float((a + res.back())) / 2;
} else{
return res.back();
}
}
}
while (i < length1){
res.push_back(nums1[i]);
i++;
if (res.size() == k){
if (sum % 2 == 0){
// pop_back
int a = res.back();
res.pop_back();
return float((a + res.back())) / 2;
} else{
return res.back();
}
}
}
while (j < length2){
res.push_back(nums2[j]);
j++;
if (res.size() == k){
if (sum % 2 == 0){
// pop_back
int a = res.back();
res.pop_back();
return float((a + res.back())) / 2 ;
} else{
return res.back();
}
}
}
return -1;
}
};