zoukankan      html  css  js  c++  java
  • LeetCode 1282. 用户分组

    https://leetcode-cn.com/problems/group-the-people-given-the-group-size-they-belong-to/

    这个题一开始还没看懂啥意思。。看了我几分钟

    说白了就是给一个数组,数组里的数字代表他所在的分组中最多有多少人。

    那么我们就很容易解决了,用一个map去记录下来每一个最大存m个人的组里面有哪几个用户即可。如果当前的长度满了,就加入答案中并且换新的链表。

        /**
         * 1282
         * @param groupSizes
         * @return
         */
        public List<List<Integer>> groupThePeople(int[] groupSizes) {
            //记录每一个分组中有多少个人
            HashMap<Integer, List<Integer>> map = new HashMap<>();
            //答案
            List<List<Integer>> res = new ArrayList<>();
            for(int i = 0; i < groupSizes.length; i++){
                //使用拉链法解决冲突
                List<Integer> list = map.get(groupSizes[i]);
                //如果是空的,说明这个分组还没有被初始化,这里进行初始化
                if(list == null){
                    list = new ArrayList<>();
                    map.put(groupSizes[i], list);
                }
                //将当前下标放入这个拉链中。
                list.add(i);
                //如果当前拉链长度已经到达了这个分组的最大长度,直接加入答案中,并且重新建一个list用于存放下一次的数据。
                if(list.size() == groupSizes[i]){
                    res.add(list);
                    list = new ArrayList<>();
                    map.put(groupSizes[i], list);
                }
            }
            return res;
        }

    我看到评论区有直接拿数组做的,真的牛~

  • 相关阅读:
    登录注册功能
    29-----BBS论坛
    linux笔记
    nginx,uwsgi发布web服务器
    linux常用服务部署
    linux系统基础优化及常用命令
    linux基本操作命令
    linux命令
    linux基础
    阿里云服务器搭建
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13019533.html
Copyright © 2011-2022 走看看