纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

刷题LeetCode4。寻找两个正序数组的中位数

5月5日 拭朱砂投稿
  题目链接:
  力扣
  题目描述
  给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。
  请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(mn))题目分析
  常规思路:
  1。合并两个数组再排序,时间复杂度O(mn),空间复杂度O(mn)
  2。归并排序,时间复杂度O(mn),空间复杂度O(1)
  本题解题思路应该如何呢?
  根据题目中时间复杂度,可以考虑采用二分查找,这也是本题的难度所在。
  假设两个有序数组分别是A和B,两数组的总长度为totalLength:两数组总长度(totalLength)为奇数:中位数下标(midIndex)totalLength2,中位数下标midIndex所在数;两数组总长度(totalLength)为偶数,中位数下标有两个midIndex1,midIndex2,midIndex1totalLength21,midIndex2totalLength2,中位数(下标midIndex1所在数下标midIndex2所在数)2;
  注意:midIndex,为两数组合并后的下标,并不是真的将两个数组进行合并,大家要搞清楚这个概念。
  这个时候,问题转化为找到数组A和B中的第k大元素(kElement),那怎么找到呢?
  可以比较A〔k21〕与B〔k21〕:A〔k21〕B〔k21〕,则数组A中,下标为0至k21的元素均小于kElement,可以排除这部分元素;A〔k21〕B〔k21〕,则数组B中,下标为0至k21的元素均小于kElement,可以排除这部分元素;
  很容易想到,查找范围缩小了一半,可以在排除后的新数组上继续进行二分查找,并且根据我们排除数的个数,减少k的值(因为我们排除的数都不大于第k小的数)。需要注意以下几种情况:
  1。保证数组不越界;
  2。如果一个数组为空,说明该数组中的所有元素都被排除,我们可以直接返回另一个数组中第k小的元素;
  3。若k1,只要返回两个数组首元素的最小值即可。代码实现时间复杂度:O(log(mn))空间复杂度:O(1)publicclassFindMedianSortedArrays4{常规思路:《1》合并两个数组在排序《2》归并排序paramargspublicstaticvoidmain(String〔〕args){int〔〕num1{1,3};int〔〕num2{2};int〔〕num1{1,3,4,9};int〔〕num2{1,2,3,4,5,6,7,8,9};FindMedianSortedArrays4findMedianSortedArrays4newFindMedianSortedArrays4();findMedianSortedArrays4。findMedianSortedArrays(num1,num2);}二分查找,巧妙时间复杂度:O(log(mn))空间复杂度:O(1)paramnums1paramnums2returnpublicdoublefindMedianSortedArrays(int〔〕nums1,int〔〕nums2){intlength1nums1。intlength2nums2。inttotalLengthlength1length2;两数组总长度(totalLength)为奇数,中位数下标(midIndex)totalLength2,中位数下标k所在数if(totalLength21){System。out。println(两数组总长度(totalLength)为奇数);intmidIndextotalLength2;doublemediangetKthElement(nums1,nums2,midIndex1);System。out。println(median:median);}else{两数组总长度(totalLength)为偶数,中位数下标有两个midIndex1,midIndex2,midIndex1totalLength21,midIndex2totalLength2,中位数(下标midIndex1所在数下标midIndex2所在数)2System。out。println(两数组总长度(totalLength)为偶数);intmidIndex1totalLength21,midIndex2totalLength2;doublemedian(getKthElement(nums1,nums2,midIndex11)getKthElement(nums1,nums2,midIndex21))2。0;System。out。println(median:median);}}获取第k小的元素paramnums1paramnums2paramkreturnpublicintgetKthElement(int〔〕nums1,int〔〕nums2,intk){System。out。println(初始k:k);intlength1nums1。intlength2nums2。用来记录两个数组寻找第k小元素的起始下标intindex10,index20;while(true){边界情况,数组1为空,只需要考虑数组2if(index1length1){returnnums2〔index2k1〕;}边界情况,数组2为空,只需要考虑数组1if(index2length2){returnnums1〔index1k1〕;}if(k1){returnMath。min(nums1〔index1〕,nums2〔index2〕);}比较num1〔k21〕与num1〔k21〕intcompareIndex1Math。min(index1k2,length1)1;intcompare1nums1〔compareIndex1〕;intcompareIndex2Math。min(index2k2,length2)1;intcompare2nums2〔compareIndex2〕;if(compare1compare2){kcompareIndex1index11;index1compareIndex11;}else{kcompareIndex2index21;index2compareIndex21;}System。out。println(compare1:compare1);System。out。println(compare2:compare2);System。out。println(index1:index1);System。out。println(index2:index2);System。out。println(k:k);}}}
  注意:while语句中是最核心的部分,也就是二分查找的主要思想。
  好了,今天就到这里,感谢各位看官到这里,不如点个关注吧!
投诉 评论 转载

刷题LeetCode4。寻找两个正序数组的中位数题目链接:力扣题目描述给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为……卢伟冰要再造一个全球第一,K30Pro搭载骁龙865,全面碾2019年初,Redmi宣布品牌独立,自此小米集团小米Redmi双品牌策略已形成。小米数字系列在高端市场形成与华为Mate、P系列的对标,Redmi的K系列则对标荣耀V系列,小……3个月跌掉250亿美元,Nikola真的会变成下一个瑞幸吗?明星正在坠落,拯救之路又在何方?文东篱即使无法和通用汽车达成战略合作,Nikola也会找到前进的道路。在当地时间10月16日公司CEOMarkRussell如此表态……浅议关于我国污水处理的现状与发展研究的论文论文关键词污水处理现状发展论文摘要世界各国的经济发展与城市化进程,使人类的生活水平不断提高,但随之而来的是不同程度的环境污染。污水就是来源之一。由于我国对环保工作的重视,……初中地理课堂教学论文一、教学模式简介课堂教学模式指的就是教师们在课堂上针对学生们的实际情况所使用的教学方法,即圣人孔子所说的因材施教。要取得良好的教学效果,教师就需要在不同的课堂上,以及在对……培养学生的合作能力,提升数学素养论文摘要:对于传统小学数学教育的探究,主要是在学习、学会的基础之上的。而在新一轮课程的探索中主要是进行以学生为主、教师为辅的教学方式,让学生成为课堂上的主人,而不是学生一味地接受老……高中数学课堂问题情境构建论文什么是问题情境?问题情境就是一种数据材料,也可以称之为背景信息。它的主要目的是激发学生的问题意识,带有一定的刺激性。数学问题情境是人们从事数学活动的相应的环境,能够为数学行为的……美团被罚款今天国家正式对美团的罚款落地了,34亿多点,对于这样一个体量的企业来说,没什么问题,对于普通人来说很多,对于这种大企业,不值一提的。之前听说美团要被罚款10亿美金,估计,国家考……华为笔记本会超过联想吗?华为笔记本matebook13、matebookxpro已经超越了联想。那个爽劲儿,只有使用过的人才知道!真心佩服华为!事实证明,只要华为想做就没有做不到的。相对于手机超……未来社会如果实现人工智能了,失去了工作的普通人怎么办?车到山前必有路,相信到了那个时候,失去了工作的普通人应该也能找到合适的位置。生活一直在不断的变化,人工智能实现了,让机器人代替了人类的劳动力,让普通人从劳动中解放出来,人们可以……买耳机不带降噪等于买手机不带拍照FreeBuds4让你半入耳近些年来真无线耳机的发展尤为迅猛,得益于摆脱了传统耳机的线材束缚,真无线耳机带来了更加便捷和快速的佩戴方式,深受消费者的追捧。特别是在如今噪音横行的前提下,真无线耳机的主动降噪……三星S22价格最新售价曝光2台小米12Pro的价格近日,三星GalaxyS22即将发布,发布前夕也已经有不少爆料。知名爆料人士RolandQuandt曝光了该新品的价格。根据爆料显示,GalaxyS22起售价849欧元(……
比亚迪海洋系轿车最新谍照曝光或命名海豹,有望在第一季度亮相比亚迪K6纯电动大巴在毛里求斯投入运营,该国总理出席发布仪式挪威乘联会评测31款电动汽车冬季续航比亚迪唐EV夺冠襄阳市与比亚迪签署战略合作协议,打造新能源与智能网联汽车产业国内核酸检测力度加强,工业安卓一体机以这种方式来帮忙!全新ALPINAXB7谍照曝光,4。4TV8发动机零百4。2最新手机出货排行榜出炉,三款品牌手机名列前茅,苹果只能排第三智慧地铁云计算推动地铁智慧化升级公安部全国机动车保有量突破4亿辆,一季度新注册登记新能源汽车上汽智己L7将于3月底交付,飞凡R7将于下半年上市8000块的996工作与6000块的朝九晚五,原来得这样算上汽集团飞凡汽车首款旗舰车型R7将于2月22日登场
年女生流行长发发型短发发型图片精选清新唯美时尚气感谢一路上有你作文500字西安桑拿按摩体验安排(这9种体质应该喝这些茶)热传聚热点网 学校阶段性工作总结2022年清明节放几天假2022过完清明节下个星期要补课吗热 《晋书庾亮传》原文及翻译防眩光屏好不好夏季穿搭女学生小个子实力显高显气质爱哭爱笑爱开玩笑的我网曝iPhone灵动岛翻车,果粉闻讯暴怒,猜是华为买通大V搞好莱坞5大类最新流行发型〔组图〕放大招,鸿蒙手机,来了

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形