Skip to main content

3-8 4.寻找两个正序数组的中位数

Date:2022-03-13 16:16:48

❌ Failed

题目:4.寻找两个正序数组的中位数 ( 困难😟 )

给定两个大小分别为 mn 的正序(从小到大)数组 nums1nums2。请你找出并返回这两个正序数组的 中位数

算法的时间复杂度应该为 O(log (m+n))

示例

示例 1:

输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

示例 2:

输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

分析

如果不需要满足 O(log (m+n)),则可以采用:

  • 法一:合并数组,排序,找中位数

    时间复杂度 O((m+n)*log(m+n)),空间复杂度 O(m+n)

  • 法二:二分法合并数组,找中位数

    时间复杂度 O(m+n),空间复杂度 O(m+n)

但如果要符合时间复杂度为 O(log (m+n)),有点难度

image-20220308085120888

等有一天领悟此题