两个有序数组的中位数—leetcode4
给定两个大小为 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相关推荐
- LeetCode4. 寻找两个有序数组的中位数
4. 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假 ...
- LeetCode4寻找两个有序数组的中位数(二分查找+分治)
目录 1.题目 2.分析 3.代码 二分查找:绝大多数二分查找问题利用的是单调性,也有一些例外)或者题目本身蕴含的可以逐渐缩小问题规模的特性解决问题.时间复杂度log级. 分治法的设计思想是:将一个难 ...
- [二分法]leetcode4:寻找两个有序数组的中位数(hard)
题目: 题解: 又是一道hard题啊,这对于原来就很少做hard的我来说,可以说是很锻炼人了,坐下来静心思考,拿纸笔画结果,写推导过程,终于把这道题搞定了. 思路: 二分法,中位数就是将数组划分为长度 ...
- LeetCode4. 寻找两个有序数组的中位数(java)
题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ...
- LeetCode实战:寻找两个有序数组的中位数
题目英文 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of th ...
- 算法--------------------寻找两个有序数组的中位数
题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2.请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)).你可以假设 nums1 和 num ...
- 6 js 比较两个数组的差异_每天一道算法题(js)(3)——寻找两个有序数组的中位数...
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...
- python【力扣LeetCode算法题库】4- 寻找两个有序数组的中位数
寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ...
- 4. 寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...
最新文章
- 每天CookBook之JavaScript-062
- 斐波那契数列矩阵快速幂
- Teams的manifest文件开始支持多语言
- kafka 重新分配节点_Kafka控制器-分区重分配
- 高并发来袭,面向Google编程的程序员要小心了!
- python编程之路——类和对象
- Hadoop HIVE 复合数据类型
- 我在优酷 OTT 端做自动化制图
- 闲置光猫改成无线打印服务器,简单几步,让闲置路由器变身专业无线AP-无线ap设置...
- 用友nc系统服务器端口号,用友NC数据库服务器参数配置说明
- 关于java架构心得
- PTA离散数学集合论自测(无答案版)
- win10本机计算机策略,Win10怎么打开本地安全策略_Win10本地安全策略在哪?-192路由网...
- 倒立摆c语言程序设计,清华大学倒立摆控制系统实验指导书.pdf
- SAT数学解题方法总结
- 查看自己电脑被别人U盘拷贝文件
- If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
- P0.9COB小间距LED显示技术的优势。
- 计算机里面不显示光驱位硬盘,悲剧了!win10下新加的光驱位机械硬盘无法识别...
- java找不到java.dll(两种情况)
热门文章
- jmeter压测过程中内存溢出
- C# 通过拼音检索中文名称
- 一个设计元素很多的网站
- EXT核心API详解(二)-Array/Date/Function/Number/String
- 单元格变色和图片透明
- 操作系统实验报告7:进程间通信—共享内存。实现一个带有n个单元的线性表的并发维护。
- php项目技术选型方案,php-现有资源下,项目技术选型求助
- eclipse没有日志_技术进展 | 加强公共DHT抵抗eclipse攻击!
- 深度探秘 从 Auto Labeler 挖掘 Tesla 全自动驾驶的工作机制
- 做项目开发你必须得掌握的知识:设计模式