4. 寻找两个正序数组的中位数
**给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
示例 2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
示例 3:
输入:nums1 = [0,0], nums2 = [0,0]
输出:0.00000
示例 4:
输入:nums1 = [], nums2 = [1]
输出:1.00000
示例 5:
输入:nums1 = [2], nums2 = []
输出:2.00000**
:合并+找中位数
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
int len1 = nums1.size();
int len2 = nums2.size();
vector<int>tempvtr;
int numidx = 0;
double res = 0;
int temsize = 0;
for(int i = 0;;)
{
if(i==len1&&numidx==len2)
break;
if(i==len1)
{
tempvtr.push_back(nums2[numidx]);
numidx ++;
continue;
}
if(numidx ==len2)
{
tempvtr.push_back(nums1[i]);
i++;
continue;
}
if( nums1[i]<nums2[numidx])
{
tempvtr.push_back(nums1[i]);
i++;
}
else
{
tempvtr.push_back(nums2[numidx]);
numidx++;
}
}
temsize = tempvtr.size();
if(temsize%2 ==0)
{
res = (tempvtr[temsize/2-1]+tempvtr[temsize/2])/2.0;
}
else
{
res = tempvtr[(temsize+1)/2-1];
}
return res;
}
};
class Solution:
def findMedianSortedArrays(self, nums1: list ,nums2: list):
len1 = len(nums1)
len2 = len(nums2)
tempvtr = list()
numidx = 0
res = 0.00
temsize = 0
i = 0
while i<len1 or numidx <len2:
if i ==len1:
tempvtr.append(nums2[numidx])
numidx += 1
continue
if numidx == len2:
tempvtr.append(nums1[i])
i += 1
continue
if nums1[i]<nums2[numidx]:
tempvtr.append(nums1[i])
i += 1
else:
tempvtr.append(nums2[numidx])
numidx += 1
temsize = len(tempvtr)
if temsize % 2 == 0:
res = (tempvtr[int(temsize/2)]+tempvtr[int(temsize/2)-1])/2
else :
res = tempvtr[int(temsize/2)]
return res