Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

我面试过这道题,说说我的解答。

Posted by tq at 2008-10-24 12:19:09
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator