LEECODE Algorithm 4. Median of Two Sorted Arrays
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
- 题目
- 代码块
- 想法
Description
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
代码
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> nums3;
double a;
double n = nums1.size(),m = nums2.size();
int i, j, k;
i = j = k = 0;
while (i < n && j < m)
{
if (nums1[i] < nums2[j])
nums3.push_back(nums1[i++]);
else
nums3.push_back(nums2[j++]);
}
while (i < n)
nums3.push_back(nums1[i++]);
while (j < m)
nums3.push_back(nums2[j++]);
a = (nums3.at((m+n-1) /2) + nums3.at((m+n) /2)) ;
a/=2;
return a;
}
};
想法
题目要求的复杂度是O(log(n+m)),那也就是说需要采用分治,归并排序复杂度是nlogn,那么在本题中,也就是(n+m)log(n+m),由于左右已经排好序,没必要使用归并算法,因此直接采用归并思想中的合并就可以了,本题中复杂度还是O(m+n).