1. 程式人生 > >兩個無序陣列求公共交集

兩個無序陣列求公共交集

百度軟體開發面試題:現有資料A[]和陣列B[],陣列A和B的元素個數可能相差很多,但也可能幾乎相同。要求有什麼方法能儘快找出陣列A和B的交集元素。說明時間和空間複雜性是多少?

    方案一:使用兩個for迴圈遍歷兩個陣列,時間複雜度為O(n2),空間複雜度O(1)
    方案二:將兩個陣列排好序,之後設定兩個陣列的下標i=0,j = 0,從頭到尾掃描兩個陣列中數是否相同,如果不同,較小的數靠後移位,如果相同,則兩個下標同時後移,直到其中一個下標到了末尾,則結束。時間複雜度為O(nlogn),空間複雜度O(1)
    方案三:對長度較短的陣列建立hash表,然後利用較長的陣列在hash表中查詢是否存在。時間複雜度為O(1),空間複雜度O(min(N,M))