leetcode链接:区域和检索
要点:前缀和
class NumArray {
// 前缀和数组
private int[] preSum;
/* 输入一个数组,构造前缀和 */
public NumArray(int[] nums) {
// preSum[0] = 0,便于计算累加和
preSum = new int[nums.length + 1];
for(int i = 1; i < preSum.length; i++){
// 计算 nums 的累加和
preSum[i] = preSum[i - 1] + nums[i - 1];
}
}
/* 查询闭区间 [left, right] 的累加和 */
public int sumRange(int left, int right) {
return preSum[right + 1] - preSum[left];
}
}
class NumArray:
def __init__(self, nums: List[int]):
self.preSum = [0]
_preSum = self.preSum
for num in nums:
_preSum.append(_preSum[-1] + num)
def sumRange(self, left: int, right: int) -> int:
_preSum = self.preSum
return _preSum[right + 1] - _preSum[left]