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

来源:2-3 实现 SQRT 分解的区间查询

warren_au

2020-11-11 12:32:29

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回答

liuyubobobo

2020-11-11

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


==========


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

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


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


0
hiuyubobobo
回复
harren_au
h 我在原问题上进行了补充。在这个课程的后续,我们会将我们写成的代码用 leetcode 上的问题做实验。按照你的思路完成代码,看看是否能够通过 leetcode 上相应的问题?如果不能,看看自己的思路哪里有问题?
h020-11-11
共2条回复

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2636 学习 · 1090 问题

查看课程