力扣第4题
发布日期:2021-05-07 15:56:05 浏览次数:21 分类:原创文章

本文共 2454 字,大约阅读时间需要 8 分钟。

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
上一篇:Python tuple与list的区别
下一篇:力扣11题

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月15日 06时22分08秒