给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
实现 NumArray 类:
NumArray(int[] nums) 使用数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))
解法:建立一个新数组储存前缀和(每一项和前面所有项的和),返回 j 对应的前缀和 - i 对应的前缀和即可。
class NumArray:
def __init__(self, nums: List[int]):
self.lis = [0]
for i in range(len(nums)):
self.lis.append(self.lis[i]+nums[i])
def sumRange(self, i: int, j: int) -> int:
return self.lis[j+1]-self.lis[i]