You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定分组数g和记录数r,如何不创建数组计算每组均分的记录数

计算方案

逻辑推导

原参考函数的分配逻辑是典型的轮询均分:从第一个组开始挨个发1条记录,发完最后一组就回到开头循环,直到所有记录发完。这个逻辑完全可以用数学计算直接出结果,不用真的建g个空数组挨个塞元素:

  • 先算平均分配的基准值:把r条记录平摊到g个组,每个组最少能拿到Math.floor(r / g)条,所有组的条数都不会低于这个值
  • 再算平摊后剩下的零头:r % g就是分完整数倍之后剩下来、不够全部分一轮的记录数,这部分会按顺序发给最靠前的r%g个组,每个组多拿1条
  • 最后拼接结果即可:前r%g个组的长度是基准值+1,剩下的组长度就是基准值

拿给出的测试用例核对完全匹配:

  • g=4、r=2:基准值是0,零头是2,前2个组拿1条,后2个拿0条,输出[1,1,0,0]
  • g=4、r=10:基准值是2,零头是2,前2个组拿3条,后2个拿2条,输出[3,3,2,2]

代码实现(无分组数组创建)

直接生成结果长度数组即可,不需要创建存记录的分组结构,计算效率远高于模拟逐次插入的逻辑:

const calcGroupSizes = (g, r) => {
    const base = Math.floor(r / g);
    const extraCount = r % g;
    return Array.from({length: g}, (_, idx) => idx < extraCount ? base + 1 : base);
}

// 验证用例
calcGroupSizes(4, 2);  // [1, 1, 0, 0]
calcGroupSizes(4, 10); // [3, 3, 2, 2]

内容的提问来源于stack exchange,提问作者Ledaso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:51:22