题目地址:
https://www.lintcode.com/problem/range-sum-query-immutable/description
给定一个数组,要求实现一个数据结构,可以进行给定区间求区间和的操作。
用前缀和。设原数组是,则另开一个数组,其长度比要多,并且表示的前个数字的和(前个数字的和就是,也就是),所以所以对于区间来说,区间和就是第个数到第个数的和,也就是。代码如下:
public class NumArray {
private int[] prefixSum;
public NumArray(int[] nums) {
prefixSum = new int[nums.length + 1];
for (int i = 0; i < nums.length; i++) {
prefixSum[i + 1] = prefixSum[i] + nums[i];
}
}
public int sumRange(int i, int j) {
return prefixSum[j + 1] - prefixSum[i];
}
}
预处理时间复杂度,区间和操作时间复杂度,空间。