2021-06-29:在两个都有序的数组中找整体第K小的数。
福大大 答案2021-06-29:
1.A和B长度不等的时候,需要把A和B的长度变成相等。
A是短数组,B是长数组。
第k小的数,k从1开始。
k
短
长
2.A和B长度相等的时候。分长度是偶数和长度是奇数两种情况。都是求中位数。
2.1.A和B长度相等,并且长度是偶数。
A=[A1,A2,A3,A4]
B=[B1,B2,B3,B4]
当A2==B2时,取A2。
当A2>B2时,B1、B2、A3、A4去掉。递归。
2.2.A和B长度相等,并且长度是奇数。
A=[A1,A2,A3,A4,A5]
B=[B1,B2,B3,B4,B5]
当A3==B3时,取A3。
当A3>B3时,B1、B2、A3、A4、A5去掉。当A2
时间复杂度是O(log(min(M,N)))。
代码用golang编写。代码如下:
执行结果如下:
***
[左神java代码](https://github.com/algorithmzuo/coding-for-great-offer/blob/main/src/class12/Code03_FindKthMinNumber.java)