https://leetcode.com/problems/range-sum-query-immutable/
用一个 sum 数组,sum[i] -- nums 中选出前 i 个元素,求和所得到的值。
这样就有:
nums = [-2, 0, 3, -5, 2, -1] sum = [0, -2, -2, 1, -4, -2, -3]
sumRange(0, 2) -> sum[2 + 1] - sum[0] -> 1 sumRange(2, 5) -> sum[5 + 1] - sum[2] -> -1 sumRange(0, 5) -> sum[5 + 1] - sum[0] -> -3
public class NumArray {
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);
*/