Range Sum Query - Immutable

Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.

Example:

Given nums = [-2, 0, 3, -5, 2, -1]

sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3

Note:

  1. You may assume that the array does not change.
  2. There are many calls to sumRange function.

num[i]存的是nums的前i-1个元素之和,反正前j个元素和减掉前i-1个元素和等于i到j的和。

class NumArray {
    private int[] nums;
    public NumArray(int[] nums) {
        this.nums = new int[nums.length+1];
        int sum=0;
        this.nums[0] = 0;
        for(int i=1; i<=nums.length; i++){
            sum=sum+nums[i-1];
            this.nums[i]=sum;
        }
    }
    
    public int sumRange(int i, int j) {
        if(nums == null || nums.length == 0){
            return 0;
        }
        return this.nums[j+1]-this.nums[i];
        
    }
}

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

猜你喜欢

转载自www.cnblogs.com/incrediblechangshuo/p/8926438.html
今日推荐