两个正序数组 找中位数_两个有序数组的中位数

两个正序数组 找中位数_两个有序数组的中位数原题连接给定两个大小分别为 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,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题连接
给定两个大小分别为 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
 

提示:

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

进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?
题解

题解连接
在这里插入图片描述

class Solution { 
   
public:
    int find(vector<int>&nums1,int begin1,vector<int>&nums2,int begin2,int k){ 
   
        if(nums1.size() - begin1 > nums2.size() - begin2)return find(nums2,begin2,nums1,begin1,k);
        int n = nums1.size() - begin1,m = nums2.size() - begin2;
        if(n <= 0)return nums2[begin2 + k - 1];
        if(k == 1)return min(nums1[begin1],nums2[begin2]);
        int a1 = min(k / 2,n);
        int a2 = k - a1;
        if(nums1[begin1 + a1 - 1] < nums2[begin2 + a2 - 1])return find(nums1,begin1 + a1,nums2,begin2,k - a1);
        else if(nums1[begin1 + a1 - 1] > nums2[begin2 + a2 - 1])return find(nums1,begin1,nums2,begin2 + a2,k - a2);
        else return nums1[begin1 + a1 - 1];
    }
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { 
   
        int n = nums1.size(),m = nums2.size();
        if((n + m) & 1)return (double)find(nums1,0,nums2,0,(n + m + 1) / 2);
        else{ 
   
            int a = find(nums1,0,nums2,0,(n + m) / 2);
            int b = find(nums1,0,nums2,0,(n + m) / 2 + 1);
            return (a + b) / 2.0;
        }
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168689.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CCF201503试题

    CCF201503试题

    2022年2月23日
    55
  • 【关于URL编码】「建议收藏」

    一、问题的由来URL就是网址,只要上网,就一定会用到。一般…

    2022年1月18日
    63
  • 国内比较好的OJ平台[通俗易懂]

    国内比较好的OJ平台[通俗易懂]OnlineJudge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。北京大学POJhttp://poj.org/中国最受欢迎OJ之一,各式各样各种难度的题目都有。杭州电子科技大学HDUOJhttp://acm.hdu.edu.cn/中国最受欢迎OJ之一,题目数量多,来源广。UVAht…

    2022年6月15日
    57
  • Chrome performance_开发者模式玩游戏流畅

    Chrome performance_开发者模式玩游戏流畅主要有4方面:(对照下图)1.控制按钮。2.overview。页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求)3.火焰图。CPU堆叠追踪的可视化(左侧名称是主线程的各种事件,Network:网络请求详细情况)4.数据统计。以图表的形式汇总数据(summary:统计报表,Bottom-Up:事件时长顺序,CallTree:事件调用顺序,Eventlog:事件发生的……

    2025年7月9日
    1
  • iphone 相册权限没办法开启_苹果请求访问App将在此处显示

    iphone 相册权限没办法开启_苹果请求访问App将在此处显示一:打开相册不提示用户权限问题描述:iOS11已经在plist文件中写了相关权限设置,但是在使用UIImagePickerController打开相册的时候却不提示用户选择权限,有以下几条情况:UIImagePickerController同样的设置使用相机会有权限选择提示,设置中也没有关于相册的设置;项目中有用到TZImagePickerCont…

    2022年9月22日
    0
  • Java——闰年判断

    Java——闰年判断目录任务1、闰年判断(一)编程实现方法一、采用并列式多分支结构评定成绩等级方法二、采用嵌套式多分支结构评定成绩等级方法三、采用延拓式多分支结构评定成绩等级方法四、采用开关式多分支结构评定成绩等级任务1、闰年判断什么是闰年?有两种情况:能被4整除但是不能被100整除;能被400整除解决闰年判断问题,涉及三种运算:算术运算、关系运算、逻辑运算第一种闰年情况:year%4==0&&year%100!=0第二种闰年情况:year%400==0(一)编程实现

    2022年7月17日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号