class Solution {
public List<List<Integer>> groupThePeople(int[] groupSizes) {
Map<Integer, ArrayList<Integer>> groupMap = new HashMap<>();
// 把所有的结果进行分组,使用hash分组
for (int i = 0; i < groupSizes.length; i++){
int size = groupSizes[i];
groupMap.putIfAbsent(size, new ArrayList<>());
groupMap.get(size).add(i);
}
List<List<Integer>> res = new ArrayList<>();
for (Map.Entry<Integer, ArrayList<Integer>> entry : groupMap.entrySet()) {
int size = entry.getKey();
ArrayList<Integer> value = entry.getValue();
// 一个组下面有几组就需要拆分成几个结果
for (int i = 0; i < value.size() / size; i++){
List<Integer> temp = new ArrayList<>();
// 需要分组的去list里面那结果
int start = i * size;
for (int j = 0; j < size; j++){
temp.add(value.get(start + j));
}
res.add(temp);
}
}
return res;
}
}
力扣:1282. 用户分组
于 2022-08-12 22:15:51 首次发布