题目:

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

找到两个排序数组的中位数。整体运行时间复杂度应为O(log(m + n))。

示例1:

nums1 = [1,3]
nums2 = [2] 中位数为2.0

示例2:

nums1 = [1,2]
nums2 = [3,4] 中位数为(2 + 3)/ 2 = 2.5

解题思路:创建一个新的长度为num1与nums2长度之和的int类型数组nums,用来存放nums1与nums2中的元素,依次将nums1与nums2数组中较小的元素逐个放入创建的数组nums,直到nums1与nums2都为空;已排好序的nums数组的中位数就是题中要求的中位数;

代码:
 1 class Solution {
 2     public double findMedianSortedArrays(int[] nums1, int[] nums2) {
 3
 4         int n=nums1.length+nums2.length;
 5         int[] nums=new int[n];//创建一个长度为n的数组,用来存放nums1中,nums2中元素
 6
 7         int i=0;
 8         int j=0;
 9         int k=0;
10         double mid=0;//两个有序数组的中位数
11
12         while(i<nums1.length||j<nums2.length){
13
14             if(i>=nums1.length){//如果i>=nums1.length说明nums1中的所有元素都已经被存入nums中
15
16                 //只需将nums2中剩余元素存入nums中即可
17                 nums[k++]=nums2[j++];
18
19             }else if(j>=nums2.length){//如果j>=nums.length说明nums2中所有元素都已经存入nums中
20
21                 //只需将nums1中的剩余元素存入nums中即可
22                 nums[k++]=nums1[i++];
23
24             }else{//如果nums1中和nums2中都还有元素未存入nums中
25
26                 //则将nums1[i]和nums2[j]中小者存入nums中
27                 if(nums1[i]<nums2[j]){
28
29                     nums[k++]=nums1[i++];
30
31                 }else{
32
33                     nums[k++]=nums2[j++];
34
35                 }
36             }
37
38         }
39
40         if(n%2==0){//如果n是偶数
41
42             if(n==0){
43
44                 return 0;
45
46             }
47
48             mid=(nums[n/2-1]+nums[n/2])/2.0;
49
50         }else{//如果n是奇数
51
52             mid=nums[(n-1)/2];
53
54         }
55
56         return mid;
57     }
58 }

转载于:https://www.cnblogs.com/xuzhiyuan/p/7607394.html

两个排序数组的中位数(4.Median of Two Sorted Arrays)相关推荐

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

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

  2. LeetCode上求两个排序数组中位数问题—— Median of Two Sorted Arrays

    1.题目 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of th ...

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

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

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

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

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

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

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

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

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

    中英题面 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . There are two sorted arrays nums1 and nums2 of size m and n ...

  8. python 找到两个排序数组的中位数_4. 寻找两个有序数组的中位数(Python)

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

  9. python 找到两个排序数组的中位数_Python查找两个有序列表中位数的方法【基于归并算法】...

    本文实例讲述了Python查找两个有序列表中位数的方法.,具体如下: 今天做到的一个机试题目,很简单,这里简单记录一下: 我用的是归并的思想,当然还可以用递归的方法,下面是具体实现: #!usr/bi ...

最新文章

  1. 【洛谷 2782】友好城市
  2. Redis进阶- Redisson分布式锁实现原理及源码解析
  3. MacOS系统下的图形化工具
  4. what to do preparing for phd
  5. 用流收集数据Collectors的用法介绍分组groupingBy、分区partitioningBy(一)
  6. Web Service 学习
  7. (原创)如何解决matlab乱码问题
  8. element中根据条件判断按钮是否禁用_从零动手封装一个通用的vue按钮组件
  9. Linux 7配置named,centos7dns服务器配置文件name.conf权限问题
  10. java FileSplit类
  11. 四、基于TCP的服务器端/客户端
  12. nginx+Git 404 error 错误处理
  13. 软件工程基础 实验1《可行性研究与项目计划》
  14. Win7批量离线更新补丁方法
  15. 高分影像批处理第一回——数据格式分析与整理
  16. Mr.Alright--- Android 11(R)桌面文件夹预览布局类似9宫格的实现
  17. Linux oracle 怎么安装,oracle在linux下怎么安装
  18. 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。
  19. 看黑客如何一步步攻破你的服务器
  20. 安装TDM-GCC时一直报错,大佬求解

热门文章

  1. 输入检测的诡异问题--firefox和ie的兼容性
  2. springcloud 并发_SpringCloud-Zuul高并发请求下的限流处理
  3. loader.asm 注释
  4. JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作
  5. 2440裸机编程之四 外部中断
  6. 自定义布局RelativeLayout 画网格线
  7. golang中的优雅中止
  8. Eratosthenes筛选求质数
  9. linux命令ping
  10. thrift RPC接口请求超时