LeetCode题解——寻找两个正序数组的中位数
- 题目介绍
- 解题思路
- 这题首先我们需要先合并两个数组,由题可知数组是已经排完序的
- 所以我们直接可以用归并操作了
- 然后找到排序后数组的中位数,如果长度为偶,就(res[mid]+res[mid-1])/2,如果为奇数,那就是res[mid]
- 代码示例
class Solution {
public:
void merge(vector<int>& res, vector<int>& nums1, vector<int>& nums2,int index1,int index2){
if(index1 == nums1.size() && index2 == nums2.size()){
return;
}else if(index1 == nums1.size()) {
res.push_back(nums2[index2]);
index2 ++;
}else if(index2 == nums2.size()) {
res.push_back(nums1[index1]);
index1 ++;
}else{
if(nums1[index1] <= nums2[index2]) {
res.push_back(nums1[index1]);
index1 ++;
}else{
res.push_back(nums2[index2]);
index2 ++;
}
}
merge(res,nums1,nums2,index1,index2);
}
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> res;
int index1 =0, index2 = 0;
merge(res,nums1,nums2,index1,index2);
if(res.size() % 2 == 0){
return (double)(res[res.size()/2] + res[res.size()/2 -1])/2;
}else{
return (double)res[res.size()/2];
}
}
};