摘要: RT,在两个有序数组中找中位数或者第K大的元素.假设两个数组为A, B长度分别为m,n.分别是递增顺序。可以采用的算法有很多:首先想到的是类似MergeSort的方式,合并的同时找第K大元素,这个基本没难度,复杂度O(m + n)。不过此算法并不是最优,还有Log级别复杂度的算法,此算法其实很简单,远没有很多网站的代码那么玄乎,以下一一道来:首先明白几个前提:1.如果是求中位数,(m + n)是奇数还是偶数对结果是很有影响的,具体的如果(m + n)是奇数,中位数唯一,如果是偶数就有两个中位数,怎么取舍就看要求了。2.如果找到的第k大数(中位数类似)是 X ,如果X排在A中的 第Ax位置,X排 阅读全文
posted @ 2012-12-26 23:42 David Luo 阅读(15874) 评论(1) 推荐(0) 编辑