Description
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.
Example 1:
Example 2:
Constraints:
- groupSizes.length == n
- 1 <= n <= 500
- 1 <= groupSizes[i] <= n
分析
题目的意思是:现在n个人分成若干组,每个人用唯一的ID来标识,groupSize表示的是对每个人分组的限制,比如groupSizes[1]=3表示第一个人必须存在大小为3的组,现在返回每个person所在的组,返回一种答案即可。
- 我参考了一下答案,可以用字典解决,字典中的键值对为 (gsize, users),其中 gsize 表示用户组的大小,users 表示满足用户组大小为 gsize。所有用户组大小相同的用户都暂时放在了同一个组中。
- 然后将字典中的每个键值对 (gsize, users) 中的 users 进行细分组,添加到结果集合res中。
代码
参考文献
用户分组