寻找两个正序数组的中位数
给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n))
。
示例 1:
1 | 输入:nums1 = [1,3], nums2 = [2] |
示例 2:
1 | 输入:nums1 = [1,2], nums2 = [3,4] |
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
Related Topics
- 数组
- 二分查找
- 分治
合并取中间值
这种方法应该是大多数人的第一反应
使用一个list集合存放两个数组的值后排序
判断集合长度的奇偶性
偶数,返回中间两个数的和的平均值
奇数,返回中间那个数
1 | class Solution { |
归并
再来理一理题目的意思
有两个正序数组num1
和nums2
要返回这两个正序数组的中位数
这不就是归并中合并两个有序数组一样的思路吗
但是这里不需要完全合并,只需要合并到中间的位置就可了
说干就干
1 | class Solution { |