兩個大檔案求交集

2021-08-21 06:33:28 字數 339 閱讀 4990

前段時間有人問我,給你兩個檔案,每個檔案每行都是字串,如何找出兩個檔案中行相同的字串。當時提供了兩個思想,但是對方不滿意。

假設檔案為a,b

1.直接遍曆法。一般人第一時間都是想遍歷吧。讀取每一行a,在b中遍歷,這樣時間複雜度為o(n^2),顯然一般人都不能接受這個時間複雜度。

2.利用雜湊思想。先把a檔案hash,在遍歷b檔案,去判斷是否存在。時間複雜度降低為o(n) ,但是空間複雜度上來了,以空間換時間。

3.一開始有想說布隆過濾器。但是布隆過濾器是有可能出現錯誤的,當時應該問問他是否可以出現小的錯誤?

對於大檔案的話,一般都是使用分治思想,將檔案分割成多個小檔案來處理。

求兩個陣列的交集

問題 給你兩個排序的陣列,求兩個陣列的交集。比如 a 1 3 4 5 7,b 2 3 5 8 9,那麼交集就是 3 5.思路 1.每一次從b陣列中取一值,然後在a陣列裡逐個比較,如果有相等的,則儲存。該演算法複雜度為 o mn m,n 分別為陣列 a b 的長度。2.因為a b 都排過序,所以,每一...

求兩個陣列的交集

方法 先用a建立 有序二叉樹,然後用b中的數值依次在二叉樹中尋找,如果找到了,就增加到交集陣列中 複雜度 建立二叉樹的複雜度logn,在二叉樹中查詢的複雜度是 logn m 1 include stdio.h int commonarray 20 int com len 0 struct node ...

求兩個陣列的交集

原址 比如a b 那麼a b 演算法一 在大多數情況,也就是一般的情況下,大家都能想出最暴力的解法,通常也就是採用遍歷或者列舉的辦法來解決問題。該題需要找出兩個陣列的交集,最簡單的乙個辦法就是用a陣列裡面的所有數去匹配b陣列裡面的數。假設兩個陣列的大小都是n,那麼這種遍歷的時間複雜度為o n 2 這...