Leetcode P1282
执行用时:3 ms, 在所有 Java 提交中击败了99.39%的用户
内存消耗:42.1 MB, 在所有 Java 提交中击败了52.44%的用户
ideas
首先创建一个list数组用来记录每个组的信息
//创建hash表
ArrayList[] hash = new ArrayList[groupSizes.length + 1];
首先获取groupSzies[i]获取当前这个人属于第几组,如果当前这个组没有创建List集合那么就去创建List集合,之后将第i个人放入当前分组中。
int key = groupSizes[i];
if (hash[key] == null){
hash[key] = new ArrayList<>();
}
hash[key].add(i);
在我们添加完元素,之后进行判断我们当前的组的个数是否等于当前组的编号,如果符合添加到res中记得清除此组方便下一次使用
if (hash[key].size() == key){
res.add(new ArrayList<>(hash[key]));
hash[key].clear();
}
code
class Solution {
public List<List<Integer>> groupThePeople(int[] groupSizes) {
List<List<Integer>> res = new ArrayList<>();
//创建hash表
ArrayList[] hash = new ArrayList[groupSizes.length + 1];
for (int i = 0; i < groupSizes.length; i++) {
int key = groupSizes[i];
if (hash[key] == null){
hash[key] = new ArrayList<>();
}
hash[key].add(i);
if (hash[key].size() == key){
res.add(new ArrayList<>(hash[key]));
hash[key].clear();
}
}
return res;
}
}