寻找两个正序数组的中位数


寻找两个正序数组的中位数

题目

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

  • 示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
  • 示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5

分析

最开始我的想法是利用TreeMap来实现数组有序,得到有序数组之后可以获取到中位数。但是TreeMap的底层是k-v结构导致不能保存重复的元素。

根据官方的解题思路采用的是先算出两个数组的长度然后得到合并后的数组长度,然后根据合并后数组的长度可以得到中位数的位置index。然后遍历两个数组得到中位数的值。

代码


  TOC