区域和检索 - 数组不可变

区域和检索 - 数组不可变(难度:简单)

1
2

方法二: 缓存
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class NumArray {
private int[] sum;

public NumArray(int[] nums) {
sum = new int[nums.length+1]; // 多增加一位
for(int i = 0; i < nums.length; i++){
sum[i+1] = sum[i] + nums[i];
}
}

public int sumRange(int i, int j) {
return sum[j+1] - sum[i];
}
}

/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(i,j);
*/

注意,在上面的代码中,我们插入了一个虚拟 0 作为 sum 数组中的第一个元素。这个技巧可以避免在 sumrange 函数中进行额外的条件检查。

4
5