- 初始化: d p [ 0 ] = n u m s [ 0 ] dp[0]=nums[0] dp[0]=nums[0]
- 状态转移: d p [ n ] = d p [ n − 1 ] + n u m s [ n ] dp[n] = dp[n-1] + nums[n] dp[n]=dp[n−1]+nums[n]
每次求区间 [ i , j ] [i,j] [i,j]之间的值之和的方法: S u m R a n g ( i , j ) = d p [ j ] − d p [ i ] + n u m s [ i ] SumRang(i,j) = dp[j] - dp[i] + nums[i] SumRang(i,j)=dp[j]−dp[i]+nums[i]
class NumArray(object):
def __init__(self, nums):
"""
:type nums: List[int]
"""
self.nums = nums
self.dp = [0] * len(nums)
'''
dp数组里下标i的位置存的值是nums数组里下标0,1,2,…,i的值之和
'''
for i, num in enumerate(nums):
if i == 0:
self.dp[i] = nums[0]
else:
self.dp[i] = self.dp[i-1] + nums[i]
def sumRange(self, i, j):
"""
:type i: int
:type j: int
:rtype: int
"""
return self.dp[j] - self.dp[i] + self.nums[i]
# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)