美文网首页
二分法求两个有序数组中第k大的元素

二分法求两个有序数组中第k大的元素

作者: 不识地理不懂距离 | 来源:发表于2019-02-11 16:24 被阅读0次

    1.二分搜索就是每次尽量去掉数组得一部分元素

    2.第一次取K个元素出来,nums1中取 K/2个(不够就全都取出), nums2中取 K - K/2(或nums1.size()),

    判断取出的两个数组元素中的末位谁大谁小;

    一般情况下:两个数组都取了k/2个元素

    那么两个数组的情况就是 

    k/2-1个数, a ,。。。

    k/2-1个数, b ,。。。

    假设a<b

    (1)则a前面的数一定在最小的k个数中,即第k个数不在a前面

    (因为a前面的数一定小于a后面并且小于b和b后面的,所以一定属于最小的k个数中)

    (2)b后面的数一定比k个数大,所以第k个数也不在b后面

    (3)所以问题就变为在剩下的数中找到第k/2大的数

    (4)重复执行,边界条件是nums1或nums2为空或最后只找一个数

    相关文章

      网友评论

          本文标题:二分法求两个有序数组中第k大的元素

          本文链接:https://www.haomeiwen.com/subject/cttyjqtx.html