303. 区域和检索 - 数组不可变
难度简单192
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。
示例:
给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange() sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3
//初始化计算好,当前i-1的总和,当计算i,j之间的总和,需要将
//j+1 因为sum[j+1] 存储的才是j+1下标对应的综合
//时间复杂度 O(N) 空间复杂度O(n)
private int [] sum;
public NumArray(int[] nums) {
sum = new int [nums.length+1];
//因为是从i-1位置相加 所以=
for (int i=1;i<=nums.length;i++) {
sum[i]= sum[i-1]+nums[i-1];
}
}
public int sumRange(int i, int j) {
return sum[j+1] - sum[i];
}