[LeetCode] Group the People Given the Group Size They Belong To

1282. Group the People Given the Group Size They Belong To

There are n people that are split into some unknown number of groups. Each person is labeled with a unique ID from 0 to n - 1.

You are given an integer array groupSizes, where groupSizes[i] is the size of the group that person i is in. For example, if groupSizes[1] = 3, then person 1 must be in a group of size 3.

Return a list of groups such that each person i is in a group of size groupSizes[i].

Each person should appear in exactly one group, and every person must be in a group. If there are multiple answers, return any of them. It is guaranteed that there will be at least one valid solution for the given input.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
vector<vector<int>> groupThePeople(vector<int>& groupSizes) {
unordered_map<int, vector<int>> lookup;
vector<vector<int>> res;
for(int i = 0; i < groupSizes.size(); i++) {
int sz = groupSizes[i];
lookup[sz].push_back(i);
if(lookup[sz].size() == sz) {
res.push_back(lookup[sz]);
lookup[sz].clear();
}
}
return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/07/15/PS/LeetCode/group-the-people-given-the-group-size-they-belong-to/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.