题目(来自leetcode网站):
实现方式采用了 python3 以及 C++
本次题目的要求为:从给定的两个已排序的nums1和nums2向量中,找出整个域内排序后的 中位数的值。
如果大佬们有比较好的 方法,希望能够指点下小弟^_^!
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)).
You may assume nums1 and nums2 cannot be both empty.
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
解答:
#Python
class Solution:
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
nums1.extend(nums2)
nums1.sort()
if len(nums1) %2 ==0:
return (nums1[int(len(nums1)/2 -1)]+nums1[int((len(nums1)/2))])/2
else:
return nums1[len(nums1)//2 ]
#C++
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
for(int i=0;i < nums2.size();i++){
nums1.insert(nums1.begin(),1,nums2[i]);
}
std::sort(nums1.begin(), nums1.end());
if(nums1.size() %2 ==0){
return (nums1[nums1.size()/2 -1]+nums1[nums1.size()/2])/2.0;
}else{
return nums1[nums1.size()/2 ];
}
}
};