1.题目

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)).

Example 1:

nums1 = [1, 3]
nums2 = [2]The median is 2.0

Example 2:

nums1 = [1, 2]
nums2 = [3, 4]The median is (2 + 3)/2 = 2.5

2.中文翻译

有两个大小分别为m和n的排序数组nums1和nums2。

查找两个排序数组的中位数。 总的运行时间复杂度应该是O(log(m + n))。

例1:
nums1 = [1,3]
nums2 = [2]
中位数是2.0

例2:

nums1 = [1,2]
nums2 = [3,4]

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

3.解题思路

合并:在这里,因为规定了时间复杂度,因此我们要充分利用这一点,又因为是排序数组,在C语言数据结构中我们学过两个排序链表的合并,其复杂度为O(log2(m+n));因此,这里采取空间换时间的策略,构建一个新的数组nums[],将nums1和nums2比较,从第一个开始,若nums1元素小于nums2元素,放入新数组nums中,然后nums1往后移动一个位置,大于则放入nums2元素,同样往后移动,当nums1和nums2有一个数组移动完成,则将另一个数组中剩下元素移入nums数组中。

求中位数:中位数在奇数和偶数时取值不同,奇数数组为最中间一个,偶数为中间两个和的一半,根据合并后nums长度来求种中位数

4.算法如下

public double findMedianSortedArrays(int[] nums1, int[] nums2) {
      double low,high,mid=0;
      int nums[]=new int[nums1.length+nums2.length];
      int i=0,j=0,k=0;
      while (i<nums1.length&&j<nums2.length) {   //两数组都有元素时
if (nums1[i]<nums2[j]) {   
nums[k++]=nums1[i++];    //比较完一次往后移动一位
}
else {
nums[k++]=nums2[j++];
}
}
      while (i<nums1.length)     //nums2数组比较完
     nums[k++]=nums1[i++];
      while(j<nums2.length)    //nums1数组比较完
     nums[k++]=nums2[j++];
      
      if ((nums.length%2)==0) {      //数组长度为偶数情况下
low=(double)nums[nums.length/2];
high=(double)nums[(nums.length/2)-1];
mid=(low+high)/2;
}
      else {
mid=(double)nums[nums.length/2];  //数组长度为奇数情况下
}
      
      return mid;

}

5.LeetCode上提交结果

LeetCode上求两个排序数组中位数问题—— Median of Two Sorted Arrays相关推荐

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

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

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

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4005 访问. 给定两个大小为 m 和 n 的有序数组 nums1 ...

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

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

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

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

  5. 【LeetCode】004 Median of Two Sorted Arrays 两个排序数组合并后的中位数

    题目:LeetCode 004 Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of size m an ...

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

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

  7. 求两个有序数组的中位数或者第k小元素

    问题:两个已经排好序的数组,找出两个数组合并后的中位数(如果两个数组的元素数目是偶数,返回上中位数). 设两个数组分别是vec1和vec2,元素数目分别是n1.n2. 算法1:最简单的办法就是把两个数 ...

  8. [leetcode] 4 寻找两个有序数组的中位数(二分+递归查找第K小数)(重要)

    问题描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 n ...

  9. 求两个有序数组的中位数

    leetcode: 4 Median of Two Sorted Arrays 题目:给两个有序数组,长度为n和m,在 O(log (m+n))时间内找出两个数组中所有数字的中位数. 题解(参考讨论区 ...

最新文章

  1. java 抽象类 命名,java – 抽象类命名约定
  2. kali无限登录_Kali Linux没有无线网卡?玩个锤纸~
  3. 向上造型和向下造型_国标舞So easy?!亲,你怕是凹错造型咯~
  4. Bean放入Spring容器,你知道几种方式?
  5. Lazarus 日志工具 MultiLog
  6. GB28181-2016系统相关技术介绍
  7. qemu 的方式安装debian 模拟powerpc
  8. android lottie字体json,Android Lottie集成及基本用法
  9. 初识SQL(新手入门)
  10. 台达plc控制伺服电机编程实例_分享3个台达PLC控制伺服项目接线及程序案例
  11. 加密狗映射至虚拟服务器,ESXI 5.1/5.5 主机添加或映射USB设备(加密狗)(示例代码)...
  12. 彻底清理c盘空间,本人亲测有效--WinDirStat
  13. 使用 Python 进行数据清洗的完整指南
  14. android led 字体下载,Android LED数字/电子表字体digital font
  15. 面试官问“你还有什么需要了解的吗”——应该这样回答
  16. win7共享网络的方法简述
  17. Vulkan教程 - 01 环境搭建
  18. pathon和c语言的区别
  19. 【华为机试】【校招】【Java】机器人走迷宫(DFS)
  20. oracle表增量同步到hive分区表

热门文章

  1. mysql 语句_如何记录MySQL执行过的SQL语句
  2. 博士申请 | 北京理工大学宋承天老师组招收目标感知与识别方向博士生
  3. NeurIPS 2021 | 微软研究院提出CLUES,用于NLU的少样本学习评估
  4. NeurIPS 2021有哪些值得读的NLP论文?
  5. 博士申请 | 美国杜克大学徐攀助理教授招收机器学习/人工智能全奖博士生
  6. 2021年自然语言处理 (NLP) 算法学习路线!
  7. 想快速发表CV/NLP论文?试试这几个方向!
  8. 学好机器学习,这里有想要的一切
  9. 解决Spring Boot 整合Security后,所有接口提示Unauthorized、返回401
  10. Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02