两个正序数组 找中位数_leetcode合并两个有序数组

两个正序数组 找中位数_leetcode合并两个有序数组原题连接给定两个大小分别为 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/168864.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月9日 上午9:36
下一篇 2022年8月9日 上午9:46


相关推荐

  • pycharm中import pandas 无效

    pycharm中import pandas 无效C Users Administrato condarc 文件中 channels 中的 https 改为 http 如下 channels http mirrors tuna tsinghua edu cn anaconda pkgs main http mirrors tuna tsinghua edu cn anaconda pkgs rhttp mirrors tuna tsinghua edu cn anaconda pkgs msys2

    2026年3月27日
    2
  • siege 用户登录_压测工具siege

    siege 用户登录_压测工具siegesiege 这个开源的压力测试工具 可以方便开发者快速测试网站或 API 接口的并发情况 网站性能情况 Siege 是什么 Siege 是一个开源回归测试和基准测试实用程序 它可以使用用户定义数量的模拟用户对单个 URL 进行压力测试 也可以将许多 URL 读入内存并同时对它们进行压力测试 该程序报告记录的命中总数 传输的字节数 响应时间 并发性和返回状态 Siege 支持 HTTP 1 0 和 1 1 协议 GET 和 POS

    2026年3月16日
    3
  • kubernetes CKA题库(附答案)

    kubernetes CKA题库(附答案)第一题RBAC授权问题权重:4%设置配置环境:[student@node-1]$kubectlconfiguse-contextk8sContext为部署管道创建一个新的ClusterRole并将其绑定到范围为特定的namespace的特定ServiceAccount.Task创建一个名为deployment-clusterrole且仅允许创建以下资源类型的新ClusterRole:DeploymentStatefulSetDaemonSet在现有的name

    2022年6月9日
    145
  • 讯飞星火智能平台_人工智能网页版即时使用通道

    讯飞星火智能平台_人工智能网页版即时使用通道

    2026年3月14日
    2
  • JAVA自定义注解使用

    JAVA自定义注解使用说到注解在 java 中我们经常会看到 Override Deprecated SuppressWarn 这些注解 这些都是 JDK 自带的注解关于自定义注解 1 使用 interface 关键字定义注解 2 成员以无参方式声明 3 成员可以使用 default 指定一个默认值 4 如果只有一个成员 nbsp 成员名必须为 value 使用时可以忽略 号元注解 Targe

    2026年3月17日
    2
  • 使用Androidkiller或APKIDE编译APK文件时出现libpng error: Not a PNG file的错误

    使用Androidkiller或APKIDE编译APK文件时出现libpng error: Not a PNG file的错误 使用Androidkiller或APKIDE编译APK文件时出现提示:&gt;W:libpngerror:NotaPNGfile&gt;W:ERROR:FailureprocessingPNGimageD:\xin\AndroidKiller_v1.3.12018\projects\CFF_100\Project\res\mipmap-xxhdpi-v4\ic_…

    2025年7月30日
    8

发表回复

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

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