问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4005 访问。

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 

请找出这两个有序数组的中位数。要求算法的时间复杂度为 

你可以假设 nums1 和 nums2 不同时为空。

nums1 = [1, 3]

nums2 = [2]

中位数是 2.0

nums1 = [1, 2]

nums2 = [3, 4]

中位数是 (2 + 3)/2 = 2.5

There are two sorted arrays nums1 and nums2 of size m and n respectively.

Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

You may assume nums1 and nums2 cannot be both empty.

nums1 = [1, 3]

nums2 = [2]

The median is 2.0

nums1 = [1, 2]

nums2 = [3, 4]

The median is (2 + 3)/2 = 2.5

中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。

对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。

这道题经过简单的思维转换其实可以转换成求第k小的值问题,首先合并2个数组,再找出第k小的值。该题需要根据原问题规模(m+n)的奇偶性做出相应调整。


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4005 访问。

public class Program {public static void Main(string[] args) {int[] nums1 = { 1, 2, 3 };int[] nums2 = { 4, 5 };var res = FindMedianSortedArrays(nums1, nums2);Console.WriteLine($"The median is {res}.");Console.ReadKey();}private static double FindMedianSortedArrays(int[] nums1, int[] nums2) {int size = nums1.Length + nums2.Length;int[] union = new int[size];int mid = size / 2;int even = (size % 2 == 0) ? 1 : 0;int m1, m2;int left, right;for(int i = m1 = m2 = 0; i < size; i++) {left = m1 < nums1.Length ? nums1[m1] : int.MaxValue;right = m2 < nums2.Length ? nums2[m2] : int.MaxValue;if(left < right) {union[m1 + m2] = nums1[m1];m1++;} else {union[m1 + m2] = nums2[m2];m2++;}if(i == mid) break;}return (union[mid] + union[mid - even]) / 2.0;}}

以上给出1种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4005 访问。

The median is 3.

分析:

显然这种解法在最坏的情况下的时间复杂度为  ,并没有达到题中要求的  ,这里仅为标记,稍后再来改进算法。

C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)相关推荐

  1. LeetCode刷题第二天——3Longest Substring Without repeating character 4 Median of Two Sorted Arrays...

    混淆点: 子串 连续 子序列 可以不连续 知识点: HashMap: 出现问题: 1.使用unordered_map头文件时报错 #error This file requires compiler ...

  2. 算法—两个有序数组的中位数 Median of Two Sorted Arrays

    关注微信公众号:CodingTechWork,一起学习进步. 题目 There are two sorted arrays nums1 and nums2 of size m and n respec ...

  3. 学渣的刷题之旅 leetcode刷题 88. 合并两个有序数组

    给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n ...

  4. LeetCode刷题(Python)——在排序数组中查找元素的第一个和最后一个位置

    题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值 ...

  5. leetcode题库:4.两个排序数组的中位数

    题目: /**   *leetcode题库:4. 求两个排序数组的中位数  *  *  给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 .  *  请找出这两个有序数组的中位数. ...

  6. 力扣刷题之合并两个有序数组

    力扣刷题之合并两个有序数组 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你 合并 nu ...

  7. LeetCode 4 两个排序数组的中位数

    有两个大小为 m 和 n 的排序数组 nums1 和 nums2 . 请找出两个排序数组的中位数并且总的运行时间复杂度为 O(log (m+n)) . 示例 1: nums1 = [1, 3] num ...

  8. 两个排序数组的中位数(4.Median of Two Sorted Arrays)

    题目: 有两个排序的数组nums1和nums2分别为m和n大小. 找到两个排序数组的中位数.整体运行时间复杂度应为O(log(m + n)). 示例1: nums1 = [1,3] nums2 = [ ...

  9. 算法-两个排序数组的中位数

    题目 两个排序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 示例 1:num ...

  10. Leetcode4---求两个排序数组的中位数

    题目:给定两个排序数组,求两个排序数组的中位数,要求时间复杂度为O(log(m+n)) 举例: Example 1: nums1 = [1, 3] nums2 = [2]The median is 2 ...

最新文章

  1. php判断值是否为空
  2. 【转载】C#编码标准━━项目设置和项目结构
  3. 开发日记-20190506 关键词 汇编语言(五)Hello World!
  4. 利用zabbix-java-gateway监控jvm
  5. 宜搭数字工厂,让订单周期缩减三分之一
  6. 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档
  7. linux硬件 软件raid,Linux下软件RAID的实现
  8. 2017年,Java程序猿10本经典好书推荐
  9. 蓝桥杯单片机stc15f2k61s2矩阵按键中断扫描代码
  10. 海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践 1
  11. Java中的继承:父类和子类的关系
  12. 真实VS虚拟,虚拟现实如何定义
  13. linux安装kafka_巨杉Tech | 基于Kafka+Spark+SequoiaDB实时处理架构快速实战
  14. 制作整人计算机病毒,自己制作简单病毒---三行命令的整人BAT,弹出很多窗口,一直弹到内存耗...
  15. 建筑工程PPP项目财务风险控制探析
  16. 河北省谷歌高清卫星地图下载
  17. 万豪国际成立全球清洁卫生委员会,推行更高标准清洁消毒措施
  18. 以太坊中的账户、交易、Gas和区块Gas Limit等基本概念
  19. 用Windows Performance Toolkit(WPT)分析Vista系统
  20. 企业邮箱如何申请?如何用手机号注册邮箱?

热门文章

  1. Linux——tar打包文件和压缩解压缩
  2. 笔记 备考2022华师大 教育专硕
  3. 例子 类的定义与对象的创建 狗的例子
  4. 数据结构与算法-索引1909
  5. TIDB2.1版本升级步骤
  6. 一文掌握关于Java数据结构所有知识点(欢迎一起完善) 1
  7. Hive+LDAP+Sentry
  8. SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
  9. 通过sharepoint 客户脚本,验证列表添加页面上的时间
  10. chmod命令详解使用格式和方法