2012-04-26 19 views

回答

2

它可以在O(N^2 * logN)複雜性中通過遍歷2個數組a和b和二進制搜索c在第三個數組中完成。

另一種方法是通過將其中一個數組的元素插入到散列中,對另外兩個數組中的a和b進行迭代,並查看c中是否存在c =(a + b)哈希值。

+0

對於方法2,是否有任何有效的方法來解決它,因爲它是所有3個數組已被排序? – Neel 2012-04-26 14:35:17

+1

您不能比O(N^2)更好地生成(a,b)對...散列中的搜索是O(1) – gabitzish 2012-04-26 14:39:24

4

呼叫三個陣列ABC,並且這些元件abc

while循環前兩個數組,因爲如果a是固定的,b只能增加,c也只能增加。

所以你不必通過C循環每次你有一對ab;只是循環通過C雖然循環雖然B會做。

假設現在所有三個陣列具有長度O(N)的時間複雜度爲O(N^2),由於在A每一個值,你需要經過所有的B和所有的C,其數量是O(N)。