// 1282. Group the People Given the Group Size They Belong To
class Solution {
public List<List<Integer>> groupThePeople(int[] groupSizes) {
HashMap<Integer, ArrayList<Integer>> hashMap = new HashMap<>();
for (int i = 0; i < groupSizes.length; ++i) {
if (!hashMap.containsKey(groupSizes[i])) {
hashMap.put(groupSizes[i], new ArrayList<>());
}
hashMap.get(groupSizes[i]).add(i);
}
List<List<Integer>> ans = new ArrayList<>();
for (Map.Entry<Integer, ArrayList<Integer>> e : hashMap.entrySet()) {
int i = 0;
int listSize = e.getValue().size();
while (i < listSize) {
ans.add(new ArrayList<>());
for (int j = 0; j < e.getKey(); ++i, ++j) {
ans.get(ans.size() - 1).add(e.getValue().get(i));
}
}
}
return ans;
}
}
学习笔记:
这是一道用到哈希表的题目,我写得特别顺利,而且高效,但是不知道为什么速度是8ms,只击败了20%的用户。
可能因为我是把所有的遍历了一遍,分了组,然后再装起来。但是这应该没速度上的影响才对。最近工作繁忙,得等有空了再研究了。