Leetcode 寻找两个有序数组的中位数
2021-02-06 16:18
标签:logs 组合 ted 个数 ble 复杂 一个 median class 2020-04-26 原题链接 题意就是寻找两个有序数组的中位数。第一反应可能会先把两个数组合并然后再找中位数,但是显然我们没有必要把合并后的数组存起来,只要依次搜索,得到最中间的一个或两个就可。美中不足的是它的时间复杂度为 为了达到题目中时间复杂度为 顺便吐嘈一句这个垃圾网站 coding 体验极差 hhh O(m + n): by SDUST weilinfox Leetcode 寻找两个有序数组的中位数 标签:logs 组合 ted 个数 ble 复杂 一个 median class 原文地址:https://www.cnblogs.com/weilinfox/p/12781374.html
O(m + n)
。O(log(m + n))
的要求,我们可以使用二分(其实也是看了题解后 ohhhhhhh )。前面我们是一个一个剔除,现在我们可以一次剔除 (m + n) / 4
个。直接比较 nums1[(m+n)/4]
和 nums2[(m+n)/4]
,若 nums1[(m+n)/4]
小,则它和它之前的部分就可以被直接剔除,因为他们一定是在中位数之前(我也想过是否也可以把 nums2[(m+n)/4]
之前的也去掉呢,答案是不可以)。以这个思路反复直到得到 (m + n) / 2
和 (m + n) / 2 + 1
位的两个数。这个方法的边界判断烦得不行,更有趣的是要注意 [] [1]
类似的各种极端情况。
/*
*lang C++
*user weilinfox
*/
class Solution {
public:
static double findMedianSortedArrays(vector
本文链接 https://www.cnblogs.com/weilinfox/p/12781374.html
文章标题:Leetcode 寻找两个有序数组的中位数
文章链接:http://soscw.com/index.php/essay/51805.html