0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

寻找两个正序数组的中位数

汽车电子技术 来源:C语言Plus 作者:Maye426 2023-02-27 14:36 次阅读

教程使用C++版本编写代码,如需其他版本,请自行修改,并在力扣网站中测试!

题目描述

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

算法的时间复杂度应该为 O(log (m+n)) 。

示例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

提示:

  • nums1.length == m
  • nums2.length == n
  • 0 <= m <= 1000
  • 0 <= n <= 1000
  • 1 <= m + n <= 2000
  • -106 <= nums1[i], nums2[i] <= 106

C++题目源码:

解决方案一:

//中位数的理解:
//有序序列
//总数是奇数
//1 2 3 4 5     5/2 =2
//总数是偶数
//1 2 3 4 5 6   6/2=3   (3+4)/2.0=3.5
//合并两个有序序列
//查找中位数即可
class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
        //合并得到一个有序序列
        vector<int> result;
        for(auto& v:nums1)
        {
            result.push_back(v);
        }
        for(auto& v:nums2)
        {
            result.push_back(v);
        }
        sort(result.begin(),result.end());
        //分为奇数和偶数的情况输出中位数即可
        int length=result.size();
        if((length+1)%2==0)    //奇数个长度
        {
            return result[length/2];
        }
        else
        {
            int pos=length/2;
            return (result[pos-1]+result[pos])/2.0;
        }
    }
};

解决方案二:

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
    {
        vector<int> result(nums1.size()+nums2.size());
        if(nums1.size()==0)
        {
            copy(nums2.begin(),nums2.end(),result.begin());
        }
        else if(nums2.size()==0)
        {
            copy(nums1.begin(),nums1.end(),result.begin());
        }
        else
        {
            merge(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),result.begin());
        }
        int pos=result.size()/2;
        return pos!=0&&result.size()%2==0?(result[pos-1]+result[pos])/2.0:result[pos];
    }
};
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72901
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66814
  • 编写
    +关注

    关注

    0

    文章

    29

    浏览量

    8373
收藏 人收藏

    评论

    相关推荐

    C++力扣刷题记之找两个序数组中位数,让我们从C++做题到放弃

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:26:50

    怎样将两个数组比较

    我用图像得到两个三维数组,把这两个数组进行运算,得出值相同的部分,怎样用labview实现。由于得到的数组都很大,可以先简化一下的
    发表于 04-18 10:19

    如何将两个一维数组合并为二维数组

    如题,本人初学,希望会的网友帮助解答一下!!!还有如何将一二维数组拆分为两个一维数组!!!
    发表于 10-31 19:59

    帮忙看看:数字排序数组

    如何按照图中数字排序数组簇~~谢谢
    发表于 06-12 10:45

    两个一维数组中相同元素的个数

    各位大神,请教个问题,两个一维数组,每个数组中约有6万元素,元素都是唯一的,统计两个数组中相同元素个数,使用如下程序,速度较慢,有没有其他
    发表于 04-07 17:27

    labview怎么比较两个数组的值

    labview怎么一一对应比较两个数组的值,并且把最大值组成一新的数组
    发表于 10-12 11:06

    两个一维数组,找出短的缺失的元素

    一长一短两个一维数组,短的比长的缺失几个元素,怎么找到缺失的元素并用数组显示出来,比如【1,2,3,4,5】和【1,2,5】得出【3,4】,求大神解答,就如图所示
    发表于 03-10 11:18

    labview比较两个元素数值大小,并进行统计

    labview 中怎么比较两个位数组元素数值的大小,两个数组的数据长度是一样的,然后统计两个数组中元素不同的元素数量除数组的长度大小,输出
    发表于 05-12 18:13

    两个一维数组无法生成XY图

    `两个位数组,一直没办法生成XY图始终报错:由于数据类型(数值、字符串、数组和簇等)不匹配,将无法连线这些对象。显示即时帮助窗口可查看所需的数据类型。数据源的类型是簇 2 元素。数据接收端的类型是1D
    发表于 03-10 22:39

    两个1D数组是如何放入2D数组

    各位大家好!我想知道两个1D数组是如何放入2D数组中的。我希望最后有一个数组列。我已经得到了9.0感谢你的帮助。 以上来自于谷歌翻译
    发表于 03-13 15:59

    各位大佬 有两个组 一X轴数组Y轴数组 两个数组合成一波形 怎么求这个波形的对称度?

    各位大佬 有两个组 一X轴数组Y轴数组 两个数组
    发表于 09-26 10:40

    怎么求数组中相差最小的两个元素的差?

    怎么求数组中相差最小的两个元素的差?
    发表于 11-22 07:53

    C语言:LeetCode 153寻找旋转排序数组中的最小值

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。
    的头像 发表于 06-22 08:59 1610次阅读
    C语言:LeetCode 153<b class='flag-5'>寻找</b>旋转排<b class='flag-5'>序数组</b>中的最小值

    有关中位数计算是什么

     中位数是数理统计中一个重要的指标,它可以自动忽略数据极差带来的影响,   能够很好的评估数据,在数理统计中很常用。本文主要介绍在Python中和Mysql 中如何来求中位数,重点让大家掌握SQL计算中位数,也是面试常考题目
    的头像 发表于 02-23 16:22 403次阅读
    有关<b class='flag-5'>中位数</b>计算是什么

    介绍一种基于中位数的离群值检测方法

    Hampel滤波器是一种基于中位数的离群值检测方法,它可以用于消除在数据中存在的离群值。
    的头像 发表于 06-20 17:13 1368次阅读
    介绍一种基于<b class='flag-5'>中位数</b>的离群值检测方法