LeetCode-Median of sorted array(2)

来源:互联网 发布:淘宝模块配色代码 编辑:程序博客网 时间:2024/06/03 14:06

回想一下算法基础中解决此问题的思路:(描述借鉴网络资源)

不妨设数列A元素个数为n,数列B元素个数为m,各自升序排序,求第k小元素
    取A[k / 2] B[k / 2] 比较,
    如果 A[k / 2] > B[k / 2] 那么,所求的元素必然不在B的前k / 2个元素中(证明反证法)
    反之,必然不在A的前k / 2个元素中,于是我们可以将A或B数列的前k / 2元素删去,求剩下两个数列的
    k - k / 2小元素,于是得到了数据规模变小的同类问题,递归解决
    如果 k / 2 大于某数列个数,所求元素必然不在另一数列的前k / 2个元素中,同上操作就好。

需要特别注意的几个问题:

边界条件:

1,nums1长度为0时,直接返回nums2[k-1]

2,k==1,返回min(nums1[sk1], nums2[sk2]) (主要为了节省递归的时间)

3,k/2可能比m,n小

4,如果nums1[k1-1],nums2[k2-1]相等,返回其中一个值即可


0 0
原创粉丝点击