找出两个排好序的数组的中位数
摘要:
在LeetCode上看到的一道题目:给定两个数组大小分别为m和n,排好了序,可能是降序也可能是升序,求两个数组所有数字的中位数,要求算法复杂度为O(m+n)。这里的中位数是如下定义的:如果总个数为偶数那么就取第n/2和n/2+1个数的平均数,例如: 两个数组分别为:[1,2] 和[1,2]那么中位数就应该是1,1,2,2的中位数,也就是:1.5对于这个题目,最简单的做法自然是将两个数组在O(m+n)时间内分别整理成升序排列,然后合并两个数组到一个大的数组C里面,最后直接求C的中位数即可,这个做法的代码我就不写出来了,还是比较容易写的,但是最大的缺点在于:浪费空间,数组C的使用就导致内存多了m+ 阅读全文