区域和检索 - 数组不可变

区域和检索 - 数组不可变

注意需要多次调用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]