99网
您的当前位置:首页1282. Group the People Given the Group Size They Belong To

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

来源:99网

194

121

Add to List

Share
There are n people whose IDs go from 0 to n - 1 and each person belongs exactly to one group. Given the array groupSizes of length n telling the group size each person belongs to, return the groups there are and the people’s IDs each group includes.

You can return any solution in any order and the same applies for IDs. Also, it is guaranteed that there exists at least one solution.

Example 1:

Input: groupSizes = [3,3,3,3,3,1,3]
Output: [[5],[0,1,2],[3,4,6]]
Explanation:
Other possible solutions are [[2,1,6],[5],[0,4,3]] and [[5],[0,6,2],[4,3,1]].
Example 2:

Input: groupSizes = [2,1,3,3,3,2]
Output: [[1],[0,5],[2,3,4]]

Constraints:

groupSizes.length == n
1 <= n <= 500
1 <= groupSizes[i] <= n

class Solution {
public:
    vector<vector<int>> groupThePeople(vector<int>& groupSizes) {
        map<int,vector<int>>hash;//key表示某一个group size,vector存放符合该group要求的ID/下标
        queue<vector<int>>q;
        for(int i=0;i<groupSizes.size();i++)
        {
            int a=groupSizes[i];
            if(hash.find(a)!=hash.end()&&hash[a].size()==a-1||a==1)
            {
                hash[a].push_back(i);
                q.push(hash[a]);
                hash[a].clear();
            }
            else hash[a].push_back(i);
        }
        vector<vector<int>>res(q.size()); int len=0;
        while(q.size()) res[len++]=q.front(),q.pop();
        return res;
    }
};

因篇幅问题不能全部显示,请点此查看更多更全内容