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

## Problem Statement

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 = 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.
Input: groupSizes = [3,3,3,3,3,1,3]
Output: [,[0,1,2],[3,4,6]]

## Approach

We are using a Hash Table to store group sizes as a key with a bucket (array) of each persons index as a value. Once one of these buckets has the length that matches the person we push that into the results array and clear out the bucket

## Solution

``````var groupThePeople = function(groupSizes) {
let result = [],
hash = {}

for (const [index, person] of groupSizes.entries()){
hash[person] ? hash[person].push(index) : hash[person] = [index]
if (hash[person].length === person) {
result.push(hash[person]);
hash[person] = [];
}
}
return result
};
``````

LC

Hash table