303. 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.

解题要点:

标准DP题,声明一个dp数组,把nums里的数累计加到dp直到最后一位。需要返回sumRange时,直接调用dp[j + 1] - dp[i] 即可。

class NumArray {
    int[] dp = null;
    public NumArray(int[] nums) {
        int N = nums.length;
        dp = new int[N + 1];
        for(int i = 1; i <= N; i++){
            dp[i] = dp[i-1] + nums[i-1];
        }
    }
    
    public int sumRange(int i, int j) {
        return dp[j + 1] - dp[i];
    }
}

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

Last updated

Was this helpful?