leetcode第1282题
leetcode第1282题
题目
有一说一这题的中文题目太难懂了,看英文比较好懂
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.
Input: groupSizes = [3,3,3,3,3,1,3]
Output: [[5],[0,1,2],[3,4,6]]
解释
简单来说翻译成中文就是
一个数组[3,3,3,3,3,1,3],groupSizes[5] = 1表示第五个下标对应的人在1人组,groupSizes[0] = 3表示第0个下标对应的人在3人组,所以在三人组的就有[0,1,2,3,4,6],第5个下标在1人组,所以就把在3人组的人每三个人分一个组,所以就有两个组[0,1,2]和[3,4,6]然后还有[5]在一人组,所以分组的情况就是[[5],[0,1,2],[3,4,6]]
思路
- 先遍历一遍数组,看看把在同一规模的组的人放在一起,用哈希表来统计,这样就把同一个规模的人放在一个数组里,用对应的人数规模来当索引。
- 然后再把相同人数规模的数组按人数规模来划分,比如三人组有6个人,那就三个三个一组,分成两组,并把分成的组记录下来加入到res数组里
class Solution {public:vector<vector<int>> groupThePeople(vector<int>& groupSizes) {map<int,vector<int>>mp;vector<vector<int>>res;//记录每一种规模的用户组对应哪些坐标,比如[3,3,3,3,3,1,3]中,属于3人组的人有0,1,2,3,4,6号坐标for(int i=0;i<groupSizes.size();i++){mp[groupSizes[i]].push_back(i);}//把每种规模的组进行分组,比如属于三人组的有0,1,2,3,4,6号坐标,那就从mp[3]里不断取三个人分为一个组,就可以分成[0,1,2]和[3,4,6]这两组//遍历每种规模的组for(auto&it:mp){vector<int>temp;//遍历每种规模x的组对应的人,依次取x个人作为一组for(int i=0;i<it.second.size();i++){temp.push_back(it.second[i]);//如果达到了x个人,就把这一组加入到结果数组里面,然后把当前的存储组的结果清空if(temp.size()==it.first){res.push_back(temp);temp.clear();}}}return res;}
};
leetcode第1282题相关推荐
- 【Leetcode】 刷题之路1(python)
leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...
- 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子
一.综述 本文总结自己刷LeetCode中遇到的使用BFS方法解决相同类型的题目.(代码几乎是一模一样) 二.01矩阵(LeetCode第542题) class Solution {int[][] d ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- 【leetcode】 算法题1 两数之和
[leetcode] 算法题1 两数之和 问题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...
- leetcode第七题整数反转
leetcode第七题: 提示:这里简述项目相关背景: 挑一题简单一点的试试手 问题描述: 原因分析: 提示:这里填写问题的分析: 通过了1031个案例应该是边界问题 解决方案: 提示:先改改待会来补 ...
- leetcode贪心算法题集锦(持续更新中)
leetcode贪心算法题集锦 leetcode贪心算法题集锦(持续更新中).python 和C++编写. 文章目录 leetcode贪心算法题集锦 一.贪心算法 1.盛最多水的容器 2.买股票的最佳 ...
- c语言match,LeetCode第10题: isMatch(C语言)
引子 思路:看到两个序列去匹配的问题,最自然的想法是双层循环尝试对齐匹配,我们假设表格数字为1代表匹配成功,0代表匹配失败. 图1 分析:分别遍历s和p两个字符串,如果p[i] == s[j],则表示 ...
- [Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]
[问题描述][中等] [解答思路] copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] ...
- [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]
[问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...
- [Leetcode][第78题][JAVA][子集][位运算][回溯]
[问题描述][中等] [解答思路] 1. 位运算 复杂度 class Solution {List<Integer> t = new ArrayList<Integer>(); ...
最新文章
- 解决response响应乱码
- 教程:15、系统日志及日志分析
- fiddler设置中文版本_教你下载iOS老版本应用
- Linux下zip的操作命令
- VBA-设置打印页面的范围
- Spring Boot2.0 整合mybatis、分页插件、druid
- 错误提示之:SQL—无法在服务器上访问指定的路径或文件。请确保您具有必需的安全权限且该路径或文件存在。...
- 第二章 字符串处理与编码不再发愁
- fileupload 上传文件函数 --把图片名用日期时间命名
- font字体的一些常用代码
- 世嘉MD游戏开发【十三】:音乐和音效
- xui和嘟嘟桌面哪个好_最全的纸尿裤测评,新手妈妈必看,嘟嘟妈教你少踩雷
- star法则 java_STAR法则(示例代码)
- pom.xml文件中的dependency的scope属性值为test,但是Test sources root的文件里面不能使用
- 问题 2111: 连环阵
- 3个思考方向,轻松实现快速涨粉
- 程序人生-哈工大计算机系统大作业2022春
- 你还在怕忘记网盘密码?商鼎云助记词登录保障你的安全
- 【Python】盘点全网下载量Top100的Python库
- 历史不忍细看之--孔老二罪恶的一生