-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0721_Accounts_Merge.py
More file actions
38 lines (33 loc) · 1.51 KB
/
0721_Accounts_Merge.py
File metadata and controls
38 lines (33 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution:
def accountsMerge(self, accounts: List[List[str]]) -> List[List[str]]:
#{key: str(name), value: [set(email)]}
name_dict = {}
for each_accounts in accounts:
name = each_accounts[0]
email_list = each_accounts[1:]
if name in name_dict:
name_dict_email_list = name_dict[name]
index = 0
isMerge = False
isMerge_index = None
while index < len(name_dict[name]):
for each_email_list in email_list:
if each_email_list in name_dict_email_list[index]:
name_dict[name][index] = name_dict_email_list[index].union(email_list)
if isMerge:
name_dict_email_list[isMerge_index] = name_dict_email_list[isMerge_index].union(name_dict[name].pop(index))
index -= 1
else:
isMerge = True
isMerge_index = index
break
index += 1
if not isMerge:
name_dict[name].append(set(email_list))
else:
name_dict[name] = [set(email_list)]
sol = []
for name, email_list in name_dict.items():
for each_email_list in email_list:
sol.append([name] + sorted(list(each_email_list)))
return sol