快速求兩個陣列交集演算法

2022-08-02 14:54:14 字數 590 閱讀 9284

快速求出兩個陣列的交集的演算法,如果用迴圈遍歷的方法,其時間複雜度為o(n^n),在面試中一般不考慮這種方法。

這裡提供一種快速演算法,演算法實現步驟如下:

1. 找到arr1的最大數max,建立乙個max+1大小的陣列result。

2. 以arr1中的值作為result的下標,該索引處的值+1。

3. 在result陣列中遍歷arr2中的值為下標處的值,如果該索引值不為0,則代表該值是兩者的交集,保留。

程式實現如下:

/**

* 求兩個陣列的交集

* @param arr1

* @param arr2

* @return 陣列交集

*/private static int intersection(int arr1,int arr2)

for (int i = 0; i < arr2.length; i++)

} int returnarr = new int[list.size()];

for (int i = 0; i < list.size(); i++)

return returnarr;

}

php 兩個陣列求交集 兩個陣列的交集 II

給定兩個陣列,編寫乙個函式來計算它們的交集。輸入 nums1 1,2,2,1 nums2 2,2 輸出 2,2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 4,9 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現次數的最小值一致。我們可以不考慮輸出結果的順序。1.將兩個陣...

求兩個陣列的交集

問題 給你兩個排序的陣列,求兩個陣列的交集。比如 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 ...