leetcode #4 median of two sorted arrays理解

刷到这个题的时候,我学习了大神的算法,链接:

http://www.cnblogs.com/grandyang/p/4465932.html

碰到了一个想破脑壳的点,那就是为什么需要将m和n与k/2对比。

在github上面看到了一个非常好理解的解释,链接:

https://github.com/gatieme/LeetCode/tree/master/004-MedianOfTwoSortedArrays

为了加深理解,我用自己的话来描述一遍:

仍然用github上面的例子。从A和B班的所有同学里面选出第13矮的同学,那么这个同学一定会排在两班大排队的第13个。

他前面一共有12个同学,那么在选人的时候,按惯例去思考,不偏不倚应该在两班中选人数相当的人来进行比较,多出来的一个同学随机选择,这其实并不重要。

最一般的情况下,A(7)>B(6)>others, B的6名同学都可以排除,余下就是找剩下总人数中第13-6=7矮的同学。

然后A(4)>B(3)>others,B的三名同学都可以排除,余下找第7-3=4矮的同学。

然后A(2)>B(2)>others,B的两名同学都可以排除,余下找第4-2=2矮的同学。

然后A(1)>B(1),B的一名同学排除,余下找第2-1=1矮的同学,这时来到找第k小的数函数中k==1的情况,返回两班最矮的同学里较矮的那个即可。

(以上过程,AB交换可以类似理解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值