无尽算法中的用户分组实现
admin
2023-01-20 07:21:05
0

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

n 位用户参加活动,他们的 ID 0 n - 1,每位用户都 恰好 属于某一用户组。给你一个长度为 n 的数组 groupSizes,其中包含每位用户所处的用户组的大小,请你返回用户分组情况(存在的用户组以及每个组中用户的 ID)。

 

你可以任何顺序返回解决方案,ID 的顺序也不受限制。此外,题目给出的数据保证至少存在一种解决方案。

 

示例 1

输入:groupSizes = [ 3, 3, 3, 3, 3, 1, 3 ]

输出:[ [ 5 ], [ 0, 1, 2 ] , [ 3, 4, 6 ] ]

 

其他可能的解决方案有

[ [ 2, 1, 6 ], [ 5 ], [ 0, 4, 3] ]

[ [ 5 ], [ 0, 6, 2 ] ,[ 4, 3, 1 ] ]

 

示例 2

输入:groupSizes = [ 2, 1, 3, 3, 3, 2 ]

输出:[ [ 1 ], [ 0, 5 ], [ 2, 3, 4 ] ]

 

提示:

groupSizes.length == n

1 <= n <= 500

1 <= groupSizes[i] <= n

 

思路:

使用Hashmap

groupSizekey, ArrayList(ArrayList())value, 这里存放的Integer就是userId(也就是数组index)

插入策略:

先判断是否有key,无key则直接生成新的ArrayList(ArrayList()), 并且添加一个子ArrayList, 同时插入userId

key再判断取出的ArrayList内部的最后一个ArrayList长度是否等于对应的groupSize, 如果相等, 则追加到新组, 否则追加

题解:

public class Test {

    public static void main(String[] args) {

        System.out.println(groupThePeople(new int[]{3,3,3,3,1,3,3}));

    }

 

    private static HashMap resultMap = new HashMap<>();

 

    public static List> groupThePeople(int[] groupSizes) {

        ArrayList> results = new ArrayList<>();

    function(){ //点差 http://www.kaifx.cn/question/kaifx/1799.html

        for (int i=0;i

            add(i,groupSizes[i]);

        }

        for (ArrayList i : resultMap.values()) {

            results.addAll(i);

        }

        return results;

    }

 

    static void  add(int id, int groupSize) {

        if (resultMap.get(groupSize) == null) {

            ArrayList> groupList = new ArrayList<>();

            List group=new ArrayList<>();

            group.add(id);

            groupList.add(group);

            resultMap.put(groupSize, groupList);

        } else {

            ArrayList> a = resultMap.get(groupSize);

            if (a.get(a.size() - 1).size() == groupSize ) {

                List group=new ArrayList<>();

                group.add(id);

                a.add(group);

            } else {

                a.get(a.size() - 1).add(id);

            }

        }

    }

}

 


相关内容

热门资讯

美防长:对伊朗战争已耗资375... △美国国防部长赫格塞思(资料图)央视记者当地时间21日获悉,美国国防部长赫格塞思表示,美国对伊朗战争...
在全国抗议声中,泽连斯基解除乌... 据乌克兰媒体《基辅独立报》报道,乌克兰总统泽连斯基解除了乌克兰武装部队总司令瑟尔斯基的职务,并任命联...
也门胡塞武装:停靠沙特港口船只... 新华社科威特城7月21日电(记者尹炣)萨那消息:也门胡塞武装20日警告国际航运公司称,与沙特港口开展...
特朗普:胡塞武装若封锁红海,美... 新华社华盛顿7月21日电(记者黄强 徐剑梅)美国总统特朗普21日在白宫会见到访的黎巴嫩总统奥恩时表示...
AI第一城|GOAI世界人工智... 7月21日上午,GOAI世界人工智能开源大赛(Global Open-source AI Chall...
刀闸阀行业解读:申奥阀门的技术... 在工业流体控制领域,高粘度介质、强腐蚀环境以及含固体颗粒的复杂工况,长期是制约管路系统安全运行的关键...
原创 华... 现在的手机屏幕做得是越来越大了,iPhone17 Pro Max也做了6.9英寸大屏,国产自然不能输...
WAIC2026:没有花架子,... 齐鲁晚报·齐鲁壹点 记者 任磊磊 “逛不完,根本逛不完!”在世界人工智能大会展馆现场,不少观众一边逛...
欧洲议会外委会首次派团访华,王... 2026年7月21日,中共中央政治局委员、外交部长王毅在北京会见欧洲议会外事委员会主席麦克阿里斯特率...
大熊猫“福虎”嘴角生疮,官方回... 7月21日,南京紫清湖野生动物世界发布通告,称“福虎”自嘴角边长疮至今,园区一直在中国大熊猫保护研究...