class NumArray {
//前缀数组和
private int[] preSum;
public NumArray(int[] nums) {
preSum = new int[nums.length + 1];
for(int i = 1; i < preSum.length; i++) {
//计算nums和,将每次的和都记录下来,下一次计算不用重新开始,类似kmp算法思想
preSum[i] = preSum[i - 1] + nums[i - 1];
}
}
//查询[left, right]区间和
public int sumRange(int left, int right) {
return preSum[right + 1] - preSum[left];
}
}