区域和检索
概述:给定一个整数数组nums,处理以下类型的多个查询:计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right 。
输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]
方法一:前缀求和
思路:思路非常简单,返回两个前缀和的差值即可,所以单独对前缀进行预处理即可。
class NumArray:
def __init__(self, nums: List[int]):
self.sums = [0]
_sums = self.sums
for num in nums:
_sums.append(_sums[-1] + num)
def sumRange(self, left: int, right: int) -> int:
_sums = self.sums
return _sums[right + 1] - _sums[left]
总结
来了来了,他带着动态规划走来了~