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] stores the sum of the first i-1 elements of nums, anyway, the sum of the first j elements minus the first i-1 elements is equal to the sum of i to 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);
 */

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324776656&siteId=291194637