leetcode303.区域和检索-数组不可变

127 阅读1分钟

303.区域和检索-数组不可变

给定一个整数数组 nums,求出数组从索引 ij (ij) 范围内元素的总和,包括 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]
"""