leetcode 1282. Group the People Given the Group Size They Belong To
There are n people whose IDs go from 0 to n - 1 and each person belongs exactly to one group. Given the array groupSizes of length n telling the group size each person belongs to, return the groups there are and the people's IDs each group includes.
You can return any solution in any order and the same applies for IDs. Also, it is guaranteed that there exists at least one solution.
Example 1:
Input: groupSizes = [3,3,3,3,3,1,3]
Output: [[5],[0,1,2],[3,4,6]]
Explanation:
Other possible solutions are [[2,1,6],[5],[0,4,3]] and [[5],[0,6,2],[4,3,1]].
Example 2:
Input: groupSizes = [2,1,3,3,3,2]
Output: [[1],[0,5],[2,3,4]]
Constraints:
groupSizes.length == n1 <= n <= 5001 <= groupSizes[i] <= n
题目大意:有n个人,编号0到n-1,每个人只属于一个组,给定一个长度为n的数组gs,gs[i]表示编号为i的人所在组的人数,返回任意一个可能的分组。题目保证存在至少一种分组。
思路:每个人可以独立成组,也可以所有人都在一个组,所以可能的组的人数为1-n,我们把 组的人数相同 的人的编号放在同一个组group,最后根据组的人数进行分割分别成组(或者每当这个组达到上限,就把组内所有人放在最终的组,把当前组清空)
c++:
class Solution {
public:
vector<vector<int>> groupThePeople(vector<int>& gs) {
// vector<vector<int>> res;
// //unordered_map<int, vector<int>> G;
// vector<vector<int>> G(gs.size() + 1);
// for (int i = 0; i < gs.size(); ++i) {
// G[gs[i]].push_back(i);
// if (G[gs[i]].size() == gs[i]) {
// res.push_back(G[gs[i]]);
// G[gs[i]].clear();
// }
// }
// return res;
vector<vector<int>> res;
unordered_map<int,vector<int>> mp;
for (int i = ; i < gs.size(); ++i) {
mp[gs[i]].push_back(i);
}
for (auto x : mp) {
int i = x.first; //i表示组的人数
vector<int> v = x.second; //可以放在同一个组的所有人的编号
vector<int> t(i); //每i个人放一个组
for (int j = ; j < v.size(); ++j) {
t[j % i] = v[j];
if ((j + ) % i == ) {
res.push_back(t);
}
}
}
return res;
}
};
python3:
class Solution:
def groupThePeople(self, groupSizes: List[int]) -> List[List[int]]:
count = collections.defaultdict(list)
for i, size in enumerate(groupSizes):
count[size].append(i)
return [v[i:i+size] for size, v in count.items() for i in range(, len(v), size)]
leetcode 1282. Group the People Given the Group Size They Belong To的更多相关文章
- 【leetcode】1282. Group the People Given the Group Size They Belong To
题目如下: There are n people whose IDs go from 0 to n - 1 and each person belongs exactly to one group. ...
- LeetCode 49. 字母异位词分组(Group Anagrams)
题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "ta ...
- sql的 group by 分组;linq的 group by 分组
先来看看 linq的,下面的一段linq 是 ,在 学生导入数据的时候,我们根据学生的手机号码和学生名称进行分组,如果有重复的,我们就筛选出来,用到了 linq的 group by,注意这里是new出 ...
- mysql 数据操作 单表查询 group by 聚合函数 没有group by情况下
聚合函数只能用在组里使用 #没有group by 则默认算作一组 取出所有员工的最高工资 mysql> select max(salary) from employee; +---------- ...
- 1.(group by)如何让group by分组后,每组中的所有数据都显示出来
问题描述:表如下,如何让这个表按device_id这个字段分组,且组中的每条数据都查寻出来?(假如说这个表名为:devicedata) 错误答案:select * from devicedata GR ...
- [LeetCode] Search in a Sorted Array of Unknown Size 在未知大小的有序数组中搜索
Given an integer array sorted in ascending order, write a function to search target in nums. If tar ...
- [ext4]03 磁盘布局 – Flexible group分析
Flexible Block Groups (flex_bg),我称之为"弹性块组",是EXT4文件系统引入的一个feature. 所谓Flexible Block Groups, ...
- Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页
GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group ...
- MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...
随机推荐
- 踩坑:VScode 集成 eslint 插件
本文以 Vue 官方脚手架 Vue-cli 为例: 1. 创建 Vue 项目 注意:Vue-cli 默认给出了 eslint 配置,一路回车即可.最后在安装模块的时候,选择直接安装!我用淘宝镜像安装时 ...
- ul 加 li 实现 select 下拉选功能
由于 select 没有选中事件(onchange 事件在内容改变时才会触发,选择同一个条目不会触发),只好用其他控件来实现. <!doctype html> <html lang= ...
- rocketmq 以广播方式实现消费者消费消息
package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.D ...
- 判断List是否为空的问题
今天公司安排给页面调试Bug,感觉公司人员写的判断判断List是否为空存在一定的问题,公司判断是list!=null这是完全不对的,这只会判断是否有list对象.如果为空,他也会执行if(list!= ...
- Windows10 修改键位映射
https://blog.csdn.net/lhdalhd1996/article/details/90741092 1.为什么要修改键位我的笔记本键盘上下键是这样的: 很想捶死产品经理,你是从来不用 ...
- maven 打包异常
异常信息: [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.6.RELEASE ...
- mybatis-config.xml 和 mapper基本设置
mybatis-config.xml : <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- Linux Shell 中 > 和 >> 的异同点和应用场景
Linux Shell 中 > 和 >> 的异同点和应用场景 > 和 >> 的异同点 举例说明(start.sh 为某个服务的启动脚本,start.log 为某服务 ...
- beego 如何自定error
beego通过Redirect方法来进行跳转: 1 2 3 func (this *AddController) Get() { this.Redirect("/", 30 ...
- @lazy注解
默认情况下,Spring会在应用程序上下文的启动时创建所有单例bean 主要针对单实例 Bean ,容器启动时不创建对象,仅当第一次使用Bean的时候才创建 @Lazy @Bean public Pe ...