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:
You may assume that the array does not change.
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?