两个排序数组的中位数(4.Median of Two Sorted Arrays)
题目:
有两个排序的数组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)相关推荐
- C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4005 访问. 给定两个大小为 m 和 n 的有序数组 nums1 ...
- 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 ...
- Leetcode4---求两个排序数组的中位数
题目:给定两个排序数组,求两个排序数组的中位数,要求时间复杂度为O(log(m+n)) 举例: Example 1: nums1 = [1, 3] nums2 = [2]The median is 2 ...
- LeetCode 4 两个排序数组的中位数
有两个大小为 m 和 n 的排序数组 nums1 和 nums2 . 请找出两个排序数组的中位数并且总的运行时间复杂度为 O(log (m+n)) . 示例 1: nums1 = [1, 3] num ...
- leetcode题库:4.两个排序数组的中位数
题目: /** *leetcode题库:4. 求两个排序数组的中位数 * * 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . * 请找出这两个有序数组的中位数. ...
- 算法-两个排序数组的中位数
题目 两个排序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 示例 1:num ...
- 两个排序数组的中位数
中英题面 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . There are two sorted arrays nums1 and nums2 of size m and n ...
- python 找到两个排序数组的中位数_4. 寻找两个有序数组的中位数(Python)
题目 (难)给定两个大小为 m 和 n 的有序数组 nums1 和 nums2.请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)).你可以假设 nums1 和 nu ...
- python 找到两个排序数组的中位数_Python查找两个有序列表中位数的方法【基于归并算法】...
本文实例讲述了Python查找两个有序列表中位数的方法.,具体如下: 今天做到的一个机试题目,很简单,这里简单记录一下: 我用的是归并的思想,当然还可以用递归的方法,下面是具体实现: #!usr/bi ...
最新文章
- 【洛谷 2782】友好城市
- Redis进阶- Redisson分布式锁实现原理及源码解析
- MacOS系统下的图形化工具
- what to do preparing for phd
- 用流收集数据Collectors的用法介绍分组groupingBy、分区partitioningBy(一)
- Web Service 学习
- (原创)如何解决matlab乱码问题
- element中根据条件判断按钮是否禁用_从零动手封装一个通用的vue按钮组件
- Linux 7配置named,centos7dns服务器配置文件name.conf权限问题
- java FileSplit类
- 四、基于TCP的服务器端/客户端
- nginx+Git 404 error 错误处理
- 软件工程基础 实验1《可行性研究与项目计划》
- Win7批量离线更新补丁方法
- 高分影像批处理第一回——数据格式分析与整理
- Mr.Alright--- Android 11(R)桌面文件夹预览布局类似9宫格的实现
- Linux oracle 怎么安装,oracle在linux下怎么安装
- 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。
- 看黑客如何一步步攻破你的服务器
- 安装TDM-GCC时一直报错,大佬求解