/**
* 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.
*
* Tags: Dynamic Programming
*
* Similar Problems: (M) Range Sum Query 2D - Immutable, (M) Range Sum Query - Mutable, (E) Maximum Size Subarray Sum
* Equals k
*/
public class RangeSumQueryImmutable {
class NumArray {
private int[] nums;
public NumArray(int[] nums) {
for (int i = 1; i < nums.length; i++) {
nums[i] += nums[i - 1];
}
this.nums = nums;
}
public int sumRange(int i, int j) {
return i == 0 ? nums[j] : nums[j] - nums[i - 1];
}
}
}