题目描述:
题解:
思路:前缀和
1.在init操作中,创建一个numsum数组,numsum[i]=nums[0]+nums[1]+...+nums[i]
2.在sumRange操作中:
<1>如果left=0,则nums[left]+nums[left+1]+...+nums[right]对应right处的前缀和,直接返回numsum[right]即可。
<2>如果left=right,则直接返回nums[left]即可,通过numsum[right]-numsum[right-1]得到。
<3>numsum[right]-numsum[left-1]对应nums[left]到nums[right]之和。
class NumArray(object): def __init__(self, nums): n = len(nums) self.numsum = [0]*n self.numsum[0] = nums[0] for i in range(1,n): self.numsum[i] = self.numsum[i-1]+nums[i] def sumRange(self, left, right): lenn = len(self.numsum) if left==0: return self.numsum[right] elif left==right: return self.numsum[right]-self.numsum[right-1] return self.numsum[right]-self.numsum[left-1]