题目描述
Bob, a teacher of St. Joseph School given a task by his principal to merge the details of the students where each element details[i] is a list of strings, where the first element details[i][0] is a name of the student, and the rest of the elements are emails representing emails of the student. Two details definitely belong to the same student if there is some common email to both detail. After merging the details, return the details of the student in the following format: the first element of each detail is the name of the student, and the rest of the elements are emails in sorted order.
Note: Two details have the same name, they may belong to different people as people could have the same name. A person can have any number of details initially, but all of their details definitely have the same name.
In case 2 or more same email belongs to 2 or more different names merge with first name only. Return the 2D list in the order in a sorted way according to the name of the details.
Example 1:
Input:
n: 4
details =
[["John","[email protected]","[email protected]"],
["John","[email protected]","[email protected]"],
["Mary","[email protected]"],
["John","[email protected]"]]
Output:
[["John","[email protected]","[email protected]",
"[email protected]"],["Mary","[email protected]"],
["John","[email protected]"]]
Explanation:
The first and second John's are the same person as
they have the common email "[email protected]".
The third John and Mary are different people as none
of their email addresses are used by other accounts.
We could return these lists in any order, for example
the answer [['Mary', '[email protected]'],
['John', '[email protected]'],
['John', '[email protected]', '[email protected]',
'[email protected]']]
would still be accepted.
Example 2:
Input:
n: 5
details =
[["Gabe","[email protected]","[email protected]","[email protected]"],["Kevin","[email protected]","[email protected]","[email protected]"],["Ethan","[email protected]","[email protected]","[email protected]"],["Hanzo","[email protected]","[email protected]","[email protected]"],["Fern","[email protected]","[email protected]","[email protected]"]]
Output:
[["Ethan","[email protected]","[email protected]","[email protected]"],["Gabe","[email protected]","[email protected]","[email protected]"],["Hanzo","[email protected]","[email protected]","[email protected]"],["Kevin","[email protected]","[email protected]","[email protected]"],["Fern","[email protected]","[email protected]","[email protected]"]]
Explanation:
We don't have any common emails in any of the users.
We just sorted the emails of each person and we
return a list of the emails.(The details can be
returned in any order).
Your Task:
You don't need to read or print anything. Your task is to complete the function mergeDetails() which takes 2D List of string details denoting the details of the students and returns the list of strings denoting the details of student after merging.
Expected Time Complexity: O(NMlogN) - where N is the size of details length and M is the size of number of strings for a name.
Expected Auxiliary Space: O(N*M) - where N is the size of details length and M is the size of number of strings for a name.
Constraints:
1 <= details.length <= 1000
2 <= details[i].length <= 10
1 <= details[i][j].length <= 30
details[i][0] consists of English letters.
details[i][j] (for j > 0) is a valid email.
输入格式
见题面
输出格式
见题面