我有一个游戏,可以由多组用户相互竞争来玩。这种群体的数量很少,不到10人。玩家数量有数千人。
当用户购买门票时,会为其分配一个组。目前,为玩家分配一个组是随机完成的,但这可能会导致一个组中玩家很多而其他组中玩家很少的情况。
我遇到的问题是如何分配组编号以使组具有可比较的大小。
最佳答案
保留HashMap<Integer, List<Group>>
,关键在于相关群体的规模。每个人都从零成员开始。从最小的非空大小括号的顶部弹出一个组,将新成员添加到其中,然后将其推送到下一个最大的大小。
You get O(n)
创建它,O(1)
插入或弹出一个组,您可以得到 O(1)
如果您在调用之间将其缓存起来,则可以找到最小的组,并且只要当前组用完就可以找到下一组。
关于java - 如何创建平衡的团体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417551/