我们有两个相同大小的排序数组n.我们称之为数组a和b.
如何找到由a和b合并的排序数组中的中间元素?
Example:
n = 4
a = [1, 2, 3, 4]
b = [3, 4, 5, 6]
merged = [1, 2, 3, 3, 4, 4, 5, 6]
mid_element = merged[(0 + merged.length - 1) / 2] = merged[3] = 3
Run Code Online (Sandbox Code Playgroud)
更复杂的情况:
情况1:
a = [1, 2, 3, 4]
b = [3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
案例2:
a = [1, 2, 3, 4, 8]
b = [3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
案例3:
a = [1, 2, 3, 4, 8]
b = [0, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
案例4:
a = [1, 3, 5, 7]
b = [2, 4, 6, 8]
Run Code Online (Sandbox Code Playgroud)
所需时间:O(log n).有任何想法吗?
Anu*_*rag 10
看看两个阵列的中间部分.假设一个值较小而另一个值较大.
使用较小的值丢弃数组的下半部分.丢弃具有较高值的数组的上半部分.现在我们留下了我们开始时的一半.
冲洗并重复,直到每个阵列中只剩下一个元素.返回那两个中较小的一个.
如果两个中间值相同,则任意选择.
致谢:Bill Li的博客