303.区域和检索-数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包括 i, j 。
假设数组不可变。会多次调用 sumRange 方法。
给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()
sumRange(2, 5) -> -1
class NumArray(object):
def __init__(self, nums: List[int]):
self.sums = [0] * (len(nums) + 1) # 辅助数组sums,sums[0] = 0,
for x in range(len(nums)): # sums[i+1] = sums[i] + nums[i]
self.sums[x + 1] = self.sums[x] + nums[x]
def sumRange(self, i: int, j: int) -> int:
return self.sums[j + 1] - self.sums[i]
"""
缓存+动态规划
sum[k]: nums[0⋯k−1] 的累积和(包括这两个值),则
sumRange(i,j)= sum[j+1]−sum[i]
"""