原题
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
Example:
Given nums = [-2, 0, 3, -5, 2, -1]
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
Note:
You may assume that the array does not change.
There are many calls to sumRange function.
Accepted
129,573
Submissions
351,139
解法1
使用list slicing.
代码
class NumArray(object):
def __init__(self, nums):
"""
:type nums: List[int]
"""
self.data = nums
def sumRange(self, i, j):
"""
:type i: int
:type j: int
:rtype: int
"""
return sum(self.data[i:j+1])
# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)
解法2
构造列表, 储存累积的和, 初始化列表为[0], 遍历nums, 每次加累积的和加入列表, 然后返回self.data[j+1] - self.data[i] 即可
代码
class NumArray(object):
def __init__(self, nums):
"""
:type nums: List[int]
"""
self.data = [0]
for n in nums:
self.data.append(self.data[-1]+n)
def sumRange(self, i, j):
"""
:type i: int
:type j: int
:rtype: int
"""
return self.data[j+1]-self.data[i]
# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)