算法-寻找两个正序数组的中位数
(资料图)
给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
这道题要求找出两个已排序数组的中位数,且算法的时间复杂度应为 O(log(m+n))。其中,O 表示时间复杂度的上限,log 表示对数,m 和 n 分别表示两个数组的大小。
我们可以使用二分查找算法来解决这个问题。首先,我们将两个数组分别记为 nums1 和 nums2。为了方便,我们假设 nums1 的长度小于等于 nums2 的长度。
我们可以在 nums1 中选取一个位置 i,在 nums2 中选取一个位置 j,使得 i+j=(m+n+1)/2,其中 m 和 n 分别是两个数组的长度。如果我们能够保证:
nums1[i-1] <= nums2[j] 且 nums2[j-1] <= nums1[i]
那么,我们就已经将 nums1 和 nums2 分成了两个部分,且第一部分中的所有元素都小于第二部分中的所有元素。此时,中位数即为:
当 m+n 为奇数时,中位数为 max(nums1[i-1],nums2[j-1]); 当 m+n 为偶数时,中位数为 (max(nums1[i-1],nums2[j-1])+min(nums1[i],nums2[j]))/2。
为了保证上述条件成立,我们可以使用二分查找算法在 [0, m] 中查找合适的 i 值。在每次二分查找时,我们可以计算出 j 的值,然后检查上述条件是否成立。如果成立,则返回中位数;否则,我们就需要调整 i 的值,以便满足上述条件。具体地,如果 nums1[i-1] > nums2[j-1],则我们需要将 i 的值减小,否则将 i 的值增大。时间复杂度为 O(log(min(m,n)))。
下面是代码实现:
class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: if len(nums1) > len(nums2): nums1, nums2 = nums2, nums1 m, n = len(nums1), len(nums2) left, right = 0, m while left <= right: i = (left + right) // 2 j = (m + n + 1) // 2 - i if i < m and nums2[j-1] > nums1[i]: left = i + 1 elif i > 0 and nums1[i-1] > nums2[j]: right = i - 1 else: if i == 0: max_left = nums2[j-1] elif j == 0: max_left = nums1[i-1] else: max_left = max(nums1[i-1], nums2[j-1]) if (m + n) % 2 == 1: return max_left if i == m: min_right = nums2[j] elif j == n: min_right = nums1[i] else: min_right = min(nums1[i], nums2[j]) return (max_left + min_right) / 2
标签:
相关文章
维情国际连锁集团有限公司_关于维情国际连锁集团有限公司介绍|焦点关注
1、维情国际连锁集团有限公司创建于2001年新《婚姻法》颁布之日,是中国首家创新服务型“婚姻医院”和“情
《海贼王》军队长实力战五渣,为何在玛丽乔亚抗衡两位大将?
本次登场的四大军长,有三位是恶魔果实能力者,贝蒂的鼓舞果实,堪比神级果实,最强的应该是乌鸦。革命军的
左手130亿分红,右手160亿定增,通威股份被指“太会了”,傅鹏博连续三个季度增持
财联社4月25日讯(记者封其娟)在大手笔分红与巨额定增募资引发的声讨下,通威股份对外给出回应,表示
每日热门:“春风惠民”家电消费券发放时间将增加4天
25日,记者从洛阳市商务局获悉,五一临近,为进一步激发市场活力,释放消费潜力,2023年“春风惠民”家电消
金现代(300830.SZ)一季度净亏损1916.3万元|环球热讯
格隆汇4月25日丨金现代(300830 SZ)发布2023年一季度报告,实现营业收入6022 86万元,同比增长1 86%;归属于
时讯:江西南昌豫章书院非法拘禁刑事附带民事诉讼一案4月28日继续开庭审理
记者今天(25日)获悉,备受关注的江西南昌豫章书院非法拘禁刑事附带民事诉讼一案将于4月28日15时在江西省萍
高中生吃这6样食物抗疲劳! 还有4种缓解学习疲劳的水果!
中学生每天不仅要面对繁重的学习任务,还需面对各种压力。在多种因素作用下,有很多同学因压力过大而作息紊
世界新资讯:公司财务分析的主要指标有哪些_财务分析的30个基本指标!赶紧收藏
一盈利能力分析1 销售净利率=(净利润÷销售收入)×100%;该比率越大,企业的盈利能力越强。2 资产净利率=
天天实时:思客琦IPO:靠宁德时代撑起营收半壁江山,研发数量翻倍努力堆专利
日前,创业板向上海思客琦智能装备科技股份有限公司(以下简称“思客琦”)发出审核中心意见落实函,公司IP
【独家焦点】自然资源部:全国累计颁发近8亿本不动产权证书
据央视新闻,记者今天(25日)从全国自然资源和不动产确权登记工作会议上了解到,今年是不动产统一登记改革实
【菲律宾商报】兰州“人车生活·智享未来”汽车展销活动举行
4月21日,2023“春之约活力金城购车季”——“人车生活·智享未来”汽车展销活动在甘肃兰州举行。图为参观
天天微速讯:2023年上海市第一届职业技能大赛·徐汇分赛区正式开幕
4月25日上午,2023年上海市第一届职业技能大赛·徐汇分赛区开幕仪式在上海市工业技术学校举行。徐汇区作为
环球消息!护指午后继续下探跌超1%,深成指创业板指跌超2%,两市4600股下跌,180股跌超9%
4月25日消息,护指午后继续下探跌超1%,深成指创业板指跌超2%,两市4600股下跌,180股跌超9%。截至发稿
世界资讯:恭喜!香港知名女星今日大婚,帅哥新郎穿美少女制服跳韩舞接亲
本文由剧透社编辑:issac未经授权严禁转载,发现抄袭者将全网举报恭喜!香港著名女演员志贺连诗雅与帅气的
2023年吉林初级护师考试成绩查询时间及方式|焦点热文
2023年吉林初级护师考试成绩查询时间及方式由初级护师考试栏目提供,查找更多2023年吉林初级护师考试成绩查
当前滚动:英雄联盟之控风沈天_关于英雄联盟之控风沈天的简介
1、《英雄联盟之控风沈天》是一本竞技小说,作者是程军荣。本文关于英雄联盟之控风沈天的简介就讲解完毕,
【天天速看料】香港2月私楼落成量按月跌2%
4月25日,根据香港屋宇署数据显示,2月共有7个私人住宅项目落成,涉及3115个单位,按月减少1 98%,创13个月