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题相关推荐

  1. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  2. 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子

    一.综述 本文总结自己刷LeetCode中遇到的使用BFS方法解决相同类型的题目.(代码几乎是一模一样) 二.01矩阵(LeetCode第542题) class Solution {int[][] d ...

  3. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  4. 【leetcode】 算法题1 两数之和

    [leetcode] 算法题1 两数之和 问题   给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...

  5. leetcode第七题整数反转

    leetcode第七题: 提示:这里简述项目相关背景: 挑一题简单一点的试试手 问题描述: 原因分析: 提示:这里填写问题的分析: 通过了1031个案例应该是边界问题 解决方案: 提示:先改改待会来补 ...

  6. leetcode贪心算法题集锦(持续更新中)

    leetcode贪心算法题集锦 leetcode贪心算法题集锦(持续更新中).python 和C++编写. 文章目录 leetcode贪心算法题集锦 一.贪心算法 1.盛最多水的容器 2.买股票的最佳 ...

  7. c语言match,LeetCode第10题: isMatch(C语言)

    引子 思路:看到两个序列去匹配的问题,最自然的想法是双层循环尝试对齐匹配,我们假设表格数字为1代表匹配成功,0代表匹配失败. 图1 分析:分别遍历s和p两个字符串,如果p[i] == s[j],则表示 ...

  8. [Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] ...

  9. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  10. [Leetcode][第78题][JAVA][子集][位运算][回溯]

    [问题描述][中等] [解答思路] 1. 位运算 复杂度 class Solution {List<Integer> t = new ArrayList<Integer>(); ...

最新文章

  1. 解决response响应乱码
  2. 教程:15、系统日志及日志分析
  3. fiddler设置中文版本_教你下载iOS老版本应用
  4. Linux下zip的操作命令
  5. VBA-设置打印页面的范围
  6. Spring Boot2.0 整合mybatis、分页插件、druid
  7. 错误提示之:SQL—无法在服务器上访问指定的路径或文件。请确保您具有必需的安全权限且该路径或文件存在。...
  8. 第二章 字符串处理与编码不再发愁
  9. fileupload 上传文件函数 --把图片名用日期时间命名
  10. font字体的一些常用代码
  11. 世嘉MD游戏开发【十三】:音乐和音效
  12. xui和嘟嘟桌面哪个好_最全的纸尿裤测评,新手妈妈必看,嘟嘟妈教你少踩雷
  13. star法则 java_STAR法则(示例代码)
  14. pom.xml文件中的dependency的scope属性值为test,但是Test sources root的文件里面不能使用
  15. 问题 2111: 连环阵
  16. 3个思考方向,轻松实现快速涨粉
  17. 程序人生-哈工大计算机系统大作业2022春
  18. 你还在怕忘记网盘密码?商鼎云助记词登录保障你的安全
  19. 【Python】盘点全网下载量Top100的Python库
  20. 历史不忍细看之--孔老二罪恶的一生

热门文章

  1. unittest框架怎么生成测试报告?
  2. 战神z7完美linux,不黑不吹 战神Z7游戏本的质量真的差么?
  3. 81页智慧城市-大数据决策与支撑平台解决方案
  4. 如何用PS的量度标尺工具调整图片
  5. 拦截器和过滤器之间的区别
  6. excel小写转大写公式_excel数字小写转大写公式的教程
  7. PSPNet 使用问题
  8. win7电脑误删鼠标键盘驱动_快速恢复win7系统因驱动冲突导致鼠标键盘用不了的详细步骤...
  9. 倍加福二维码测试1-串口助手测试
  10. CH341ser(usb转串口)驱动