前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​LeetCode短视频 | 真正O(log(m+n))的解法,那些说归并排序的别误导别人了

​LeetCode短视频 | 真正O(log(m+n))的解法,那些说归并排序的别误导别人了

作者头像
我脱下短袖
修改2019-12-27 12:16:28
8890
修改2019-12-27 12:16:28
举报
文章被收录于专栏:算法无遗策算法无遗策

了解二分查找和分治算法之后,接下来就做下面第4题号。

题被分类为困难题,但是看完题目之后是有很多解法的,可以用归并排序,也可以用暴力解法。

但是难就难在时间复杂度,它要求是时间复杂度为O(log(m+n)),所以肯定会被用到二分查找。

如果使用归并排序的话时间复杂可能就在O(nlogn)上,远远就超过了二分查找的时间复杂度。

既然要求二分的方法,我们可以考虑这样的思路:

题目要求中位数,两个数组的长度之和除以2等于k。因为有两个数组,k还要再除以2,

得到的数值-1,分别置于两数组对应的下。

两数组都是升序排序,k的值我们要找第k大的数。

9大于3,说明第k大的数不在3的左部分,包括3。

把下面数组前三个数排除掉了,第k大的数变成了第k-3大的数。

也同样5是大于3,上面的数组3左部分排除。以此类推。

关于题目的执行过程,我也制作了短视频,请欣赏!http://mpvideo.qpic.cn/0af2hdozzu4vcbahaudqscqhb4bfbwgmnffmosbuaegq4cqabucq.f10002.mp4?dis_k=8a08df058cb1d34242465ada79291ed6&dis_t=1577420158

然后贴上Java代码:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法无遗策 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档