blocks = new int[Bn]每块里的个数不用盖世每组元素的个数吗blocks = new int[B]

blocks = new int[Bn]每块里的个数不用盖世每组元素的个数吗blocks = new int[B]

public NumArray(int[] nums) {

N = nums.length;
if (N == 0) {
return;
}
B = (int) Math.sqrt(N);
Bn = N / B + (N % B > 0 ? 1 : 0);

data = Arrays.copyOf(nums, N);

blocks = new int[Bn];
for (int i = 0; i < N; i++) {
blocks[i / B] += nums[i];
}
}

blocks = new int[Bn]每块里的个数不用盖世每组元素的个数吗blocks = new int[B]​

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

抱歉,没理解你的问题,什么叫:每块里的个数不用盖世每组元素的个数吗?


==========


以 13 为例,B 算出的结果为 3,表示每块包含 3 个元素。

相应的 Bn 算出的结果就是 5,即需要有 5 块。(前 4 块每块包含 3 个元素,最后一块只有 1 个元素。)


Bn 是块数,因此 blocks 含有 Bn 个元素。


  • warren_au 提问者 #1
    blocks = new int[Bn]源代码 每块里的个数不应该是每组元素的个数吗 blocks = new int[B]我认为 private int[] data,blocks; private int N;//元素总数 private int B;//每组元素的个数 private int Bn;//组数
    2020-11-11 12:35:24
  • liuyubobobo 回复 提问者 warren_au #2
    我在原问题上进行了补充。在这个课程的后续,我们会将我们写成的代码用 leetcode 上的问题做实验。按照你的思路完成代码,看看是否能够通过 leetcode 上相应的问题?如果不能,看看自己的思路哪里有问题?
    2020-11-11 12:41:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师