区域和检索 - 数组不可变
注意需要多次调用sumRange方法,所以不能简单的进行区间遍历求和,动态规划一下,记录一下 每个区间的和,然后根据索引直接求出结果。
class NumArray {
private int[] sums;
public NumArray(int[] nums) {
final int length = nums.length;
if (length == 0){
return;
}
sums = new int[length];
sums[0] = nums[0];
for (int i = 1; i < length; i++){
sums[i] = sums[i-1] + nums[i];
}
}
public int sumRange(int i, int j) {
if (i > 0) {
return sums[j] - sums[i - 1];
}
return sums[j];
}
}
/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(i,j);
*/
如果 i = 0,那么直接返回sums[j]即可
如果i > 0,那么直接返回sums[j] - sums[i - 1]