leetcode-寻找两个正序数组的中位数
点击:题目链接:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
思路
一种思路就是使用双指针,不断找到大数组的中位数,但是要注意的是,个数有奇偶之分
另一种思路,直接利用中位数:
- 为了避免奇偶性的判断,我们也可以先将大数组填充为之前的两倍,保证个数肯定是双数。
- 填充后,两个数组的中位数与大数组的关系就为,
center1 +center2 = m+n
- 使用两个数组的中位数与合并后大数组的关系
l1 < r2 && l2 < r1
, l,r 分别是对应数组的中位数的相邻两个元素 - 当其中大数组的中位数只出现在一个数组,说明此时另一个数组的数比当前的数组的数都要大或小,临界值可以表示为
center1 == 0, l1 = INT_MAX
cetner1 == m, r1 = INT_MIN
center2 == 0, l2 = INT_MAX
cetner2 == n, r2 = INT_MIN
代码
1 | class Solution { |
复杂度
时间O(log(min(m,n))),空间(1)
leetcode-寻找两个正序数组的中位数
# 相关文章
1.leetcode-删除二叉搜索树中的节点
2.leetcode-岛屿数量
3.leetcode-排序链表
4.leetcode-解码方法
5.leetcode-格雷编码
6.leetcode-寻找两个正序数组的第K大的数
7.leetcode-课程表
8.leetcode-反转链表
1.leetcode-删除二叉搜索树中的节点
2.leetcode-岛屿数量
3.leetcode-排序链表
4.leetcode-解码方法
5.leetcode-格雷编码
6.leetcode-寻找两个正序数组的第K大的数
7.leetcode-课程表
8.leetcode-反转链表