| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我面试过这道题,说说我的解答。In Reply To:请教高手一个面试题 Posted by:lastview at 2008-10-23 12:02:55 > 两有序数组,长度分别m,n,求交。 > > 求世界上最快算法。比O(m+n)快的。 是在百度面试时被问到的。不过直接是说,查询两个关键词,每个关键词的索引返回一个有序数组,然后求两个数组的查询结果的交集。数组长度分别为m和n. 解答: 1. 如果m和n规模一样,则可以直接归并,复杂度为O(m+n) 2. 如果m 远大于n,则对于n中的每个元素,在m中用二分查找,复杂度n*log(m) 3. 如果n 远大于m,则对于m中的每个元素,在n中用二分查找,复杂度m*log(n) 2,3两种情况下的处理方法都比O(m+n)快。 另外前提也说了,两数组必须有序。 当时感觉面试官比较满意这个解答,不知道对不对。 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator