在两个长度相等的排序数组中找到上中位数
问题简述
给定两个递增数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。
上中位数:假设递增序列长度为n,为第n/2个数
思路
相比 LeetCode 版,本题不需要处理奇数情况,同时在
i==0/N
时的判断更简单;二分目标:找到最大的
i
,使A[i - 1] <= B[j]
,其中i + j == N
;思路简述:将
A, B
分别分成如下两组,且保证max(A_i-1, B_j-1) <= min(A_i, B_j)
,根据中位数性质,目标值即max(A_i-1, B_j-1)
;可证,上述条件等价于找到最大的
i
,使A[i - 1] <= B[j]
(证明详见参考链接)
A_0, .., A_i-1 | A_i, .., A_N-1 B_0, .., B_j-1 | B_j, .., B_N-1 其中 i + j == N
Last updated