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

请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

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

示例 1:

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

则中位数是 2.0
示例 2:

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

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

思路:参考链接

class Solution {
public:double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {int n = nums1.size();int m = nums2.size();if(n>m)return findMedianSortedArrays(nums2,nums1);int L1,R1,L2,R2,lo=0,hi=n*2;while(lo<=hi){int c1 = (lo+hi)/2;int c2 = n+m-c1;L1 = (c1==0)?INT_MIN:nums1[(c1-1)/2];R1 = (c1==2*n)?INT_MAX:nums1[c1/2];L2 = (c2==0)?INT_MIN:nums2[(c2-1)/2];R2 = (c2==2*m)?INT_MAX:nums2[c2/2];if(L1>R2)hi = hi - 1;else if(L2>R1) lo = lo + 1;elsebreak;}return (max(L1,L2)+min(R1,R2))/2.0;}
};

两个有序数组的中位数—leetcode4相关推荐

  1. LeetCode4. 寻找两个有序数组的中位数

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

  2. LeetCode4寻找两个有序数组的中位数(二分查找+分治)

    目录 1.题目 2.分析 3.代码 二分查找:绝大多数二分查找问题利用的是单调性,也有一些例外)或者题目本身蕴含的可以逐渐缩小问题规模的特性解决问题.时间复杂度log级. 分治法的设计思想是:将一个难 ...

  3. [二分法]leetcode4:寻找两个有序数组的中位数(hard)

    题目: 题解: 又是一道hard题啊,这对于原来就很少做hard的我来说,可以说是很锻炼人了,坐下来静心思考,拿纸笔画结果,写推导过程,终于把这道题搞定了. 思路: 二分法,中位数就是将数组划分为长度 ...

  4. LeetCode4. 寻找两个有序数组的中位数(java)

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

  5. LeetCode实战:寻找两个有序数组的中位数

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

  6. 算法--------------------寻找两个有序数组的中位数

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

  7. 6 js 比较两个数组的差异_每天一道算法题(js)(3)——寻找两个有序数组的中位数...

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

  8. python【力扣LeetCode算法题库】4- 寻找两个有序数组的中位数

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

  9. 4. 寻找两个有序数组的中位数

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

最新文章

  1. 每天CookBook之JavaScript-062
  2. 斐波那契数列矩阵快速幂
  3. Teams的manifest文件开始支持多语言
  4. kafka 重新分配节点_Kafka控制器-分区重分配
  5. 高并发来袭,面向Google编程的程序员要小心了!
  6. python编程之路——类和对象
  7. Hadoop HIVE 复合数据类型
  8. 我在优酷 OTT 端做自动化制图
  9. 闲置光猫改成无线打印服务器,简单几步,让闲置路由器变身专业无线AP-无线ap设置...
  10. 用友nc系统服务器端口号,用友NC数据库服务器参数配置说明
  11. 关于java架构心得
  12. PTA离散数学集合论自测(无答案版)
  13. win10本机计算机策略,Win10怎么打开本地安全策略_Win10本地安全策略在哪?-192路由网...
  14. 倒立摆c语言程序设计,清华大学倒立摆控制系统实验指导书.pdf
  15. SAT数学解题方法总结
  16. 查看自己电脑被别人U盘拷贝文件
  17. If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
  18. P0.9COB小间距LED显示技术的优势。
  19. 计算机里面不显示光驱位硬盘,悲剧了!win10下新加的光驱位机械硬盘无法识别...
  20. java找不到java.dll(两种情况)

热门文章

  1. jmeter压测过程中内存溢出
  2. C# 通过拼音检索中文名称
  3. 一个设计元素很多的网站
  4. EXT核心API详解(二)-Array/Date/Function/Number/String
  5. 单元格变色和图片透明
  6. 操作系统实验报告7:进程间通信—共享内存。实现一个带有n个单元的线性表的并发维护。
  7. php项目技术选型方案,php-现有资源下,项目技术选型求助
  8. eclipse没有日志_技术进展 | 加强公共DHT抵抗eclipse攻击!
  9. 深度探秘 从 Auto Labeler 挖掘 Tesla 全自动驾驶的工作机制
  10. 做项目开发你必须得掌握的知识:设计模式