leetcode 4. Median of Two Sorted Arrays 寻找两个正序数组的中位数 (困难)
一、题目大意
标签: 查找
https://leetcode.cn/problems/median-of-two-sorted-arrays
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 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
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
二、解题思路
号称 leetcode 守门员的题。中位数可以来自于同一个数组,也可以来自于两个数组,可以是一个数,也可以是两个数。
实现思路(参考花花酱的讲解)
分类:
思路:假设 n1,n2 是两个数组的元素,那么 k=(n1+n2+1)/2 就表示左中位数或中位数的索引,假设从 nums1 中取 m1 个元素,从 nums2 中取 m2 个元素,那么 m1+m2 = k。我们要求的中位数就是从 max(nums[m1-1], nums[m2-1])和 min(nums[m1], nums[m2])。
三、解题方法
3.1 Java 实现
四、总结小记
2022/5/30 做不出来的题就参考别人的吧,再转为自己的思路吧
版权声明: 本文为 InfoQ 作者【okokabcd】的原创文章。
原文链接:【http://xie.infoq.cn/article/a6d3b21efc8c6aa592702619a】。文章转载请联系作者。
评论