題目地址:
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];
}
}
預處理時間複雜度,區間和操作時間複雜度,空間。