求2個集合的交集

2021-07-29 16:58:11 字數 731 閱讀 3281

文章出處:

求2個集合的交集 

最簡單、粗暴的迴圈遍歷2個集合,判斷如果有相同的元素就取出來。假設集合1的長度為m,集合2的長度為n,那麼,時間複雜度為:o(m*n) 

**:

public

static list getintersection(list list1, listlist2)}}

return

list3;

}

利用hash這種很有用的資料結構來實現。我們知道,hash的特點之一就是不允許有重複元素,即hash表中的元素都是唯一的。所以,我們的思路就是:先把第乙個集合的所有元素都放進hashset中,時間複雜度o(m);再把第二個集合中的元素放進hashset中,如果有重複元素,就是這2個集合的交集,時間複雜度為o(n)。即總的時間複雜度從o(m*n)降低到了o(m+n)。 

**:

public

static list getintersection2(list list1, listlist2)

foreach (string item in

list2)

}return

list3;

}

**:

static

void main(string

args)

}

hash的另乙個特點是查詢效率為o(1),驚人的高! 

對於這道題目要是算出來o(m*n)的同學就應該補課了。出來混,遲早要還的。

求2個集合的交集

求2個集合的交集 最簡單 粗暴的迴圈遍歷2個集合,判斷如果有相同的元素就取出來。假設集合1的長度為m,集合2的長度為n,那麼,時間複雜度為 o m n public static list getintersection list list1,listlist2 return list3 利用has...

求集合交集

求整數集合a與整數集合b的交集。輸入格式 輸入有三行 第一行是a和b的元素個數m和n 第二行是集合a的m個元素 第三行是集合a的n個元素。輸出格式 輸出交集的所有元素 按照在a集合出現的順序輸出,最後乙個輸出後面沒有空格 輸入樣例 在這裡給出一組輸入。例如 3 410 9 2 9 10 8 0 輸出...

兩個有序集合求交集

方案一 暴力法,for for,時間複雜度o n n 當資料量很大時,不可取 方案二 拉鍊法 有序集合1 有序集合2 兩個指標指向首元素,比較元素的大小 1 如果相同,放入結果集,隨意移動乙個指標 2 否則,移動值較小的乙個指標,直到隊尾 這種方法的好處是 1 集合中的元素最多被比較一次,時間複雜度...