Leetcode 712 賬戶合併

2021-09-02 14:16:48 字數 554 閱讀 5476

1,根據並查集對每一行關聯到其父節點(乙個int值,相同則表示關聯),先以行數作為父節點,相關聯的行數的父節點改為同乙個。

for (int i = 0; i < n; i++)

2,使用map將每個email關聯到這一行,實際行數

for (int i = 1; i < accounts[0].size(); i++)

/*第一行直接寫入*/

for (int i = 1; i < n; i++)

else

m[accounts[i][j]] = i;//這個email之前不存在,插入到email集合中

}}

5,最後遍歷email集合,根據email對應的行號row,如果f[row]相同,說明這兩行為同乙個父節點。

map> km;//int為父節點

for (it = m.begin(); it != m.end(); it++)

map中每乙個int對應的vector為乙個賬戶。

leetCode 721 賬戶合併

賬戶之間只要有乙個郵箱相同那麼就是同乙個賬戶,也就是同屬乙個連通分量因此可以使用並查集。由於並查集底層使用了陣列,需要知道一共有多少個不同的郵箱,因此可以使用雜湊表給每個郵箱編號,並使用雜湊表記錄每個郵箱對應的姓名。遍歷所有賬戶,對每個賬戶的郵箱進行合併就能知道合併完成後一共有幾個賬戶。查詢每個郵箱...

721 賬戶合併

給定乙個列表 accounts,每個元素 accounts i 是乙個字串列表,其中第乙個元素 accounts i 0 是 名稱 name 其餘元素是 emails 表示該賬戶的郵箱位址。現在,我們想合併這些賬戶。如果兩個賬戶都有一些共同的郵箱位址,則兩個賬戶必定屬於同乙個人。請注意,即使兩個賬戶...

leetcode 721 賬戶合併 並查集

查詢並返回所在集合的根節點 find 注意 根節點特性是 father i i 每次查詢時進行路徑壓縮,保證集合樹的高度不大於2 int find int i return f 根節點 合併兩個元素所在集合 combine void combine int i,int j 本題的重點是抽象 對映 確...