將多個集合合併成沒有交集的集合

2022-08-11 16:51:13 字數 749 閱讀 7816

2010-03-20 18:25

給定乙個字串的集合,格式如:, ,,,要求將其中交集不為空的集合合併,要求合併完成後的集合之間無交集,例如上例應輸出,, 。

(1)請描述你解決這個問題的思路;

(2)請給出主要的處理流程,演算法,以及演算法的複雜度

(3)請描述可能的改進。

解決方案:

採用hash的方法,key為字串,value為乙個鍊錶,儲存集合編號。

演算法思想:

用乙個陣列來儲存集合合併關係,如果有n個集合,則用a[n]來儲存,元素初始化為-1.

首先,將集合從左往右進行編號:0,1,2,。。。

然後,逐個遍歷集合中的字串,採用hash方法進行對映:先將該集合新增到對應鍊錶中;然後,陣列中該集合對應元素如果為-1,則改為鍊錶中最小集合編號,如果不為-1,則不作修改,繼續讀取下乙個字串,重複該操作。

例如:,,,

分析過程如下:

首先分別編號為0,1,2,3

先讀入字串a:

a 0 [0, -1, -1, -1] // 集合0對應元素原來為-1,故寫入編號0

c 1 [0, 1, -1, -1]

a 0,2 [0,1,0,-1] //集合2對應元素原來為-1,故寫入該鍊錶中最小編號0

b 2 [0,1,0,-1] //集合2對應元素不為-1,故不做修改

c 1,3 [0,1,0,1]

d 3 [0,1,0,1]

由此,可知0,2為同一集合,1,3為乙個集合。

將排序序列的集合合併成乙個排序序列

您有乙個排序序列的集合,並且想要遍歷所有合併在一起的排序序列。先看如下示例,了解實際需求 import heapq a 1,4,7,10 b 2,5,6,11 for c in heapq.merge a,b print c 124 56710 11值得注意的是,heapq.merge要求所有的輸入...

合併有交集的集合

題目如下,給定乙個字串的集合,格式如 要求將其中交集不為空的集合合併,要求合併完成後的集合之間無交集,例如上例應 輸出 1 請描述你解決這個問題的思路 2 請給出主要的處理流程,演算法,以及演算法的複雜度 3 請描述可能的改進 改進的方向如效果,效能等等,這是乙個開放問題 我查了查網上的解法,只看到...

兩個List資料集合合併成乙個List

開發工具與關鍵技術 visual studio 與c 查詢兩個差不多相同的表,乙個是入庫表,乙個是退貨表,字段大致相同,但是有所差異,入庫表的數量和所有金額都是正數,退貨表的數量和金額都是負數,所以不能join鍊錶查詢,需要分開查詢出兩個tolist 但是return只能有乙個,不能return兩次...