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:
You may assume that the array does not change.
There are many calls to sumRange function.

This question looks very simple. You can start accumulating wherever you want, but in the prompt, it says that the given array is unchanged, but the sunRange function will be queried multiple times, that is to say, the sumRange function will be called multiple times, so It needs to do some preprocessing to simplify the program time.
sum[i,j]=sum[j]-sum[i-1]

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);
 */

Leave a Reply

Your email address will not be published.

en_USEnglish