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.
题意:
给一个整数数组,和角标 i and j (i ≤ j),
计算 i 到 j 的所有数的和,包括 i 和 j 位的数字
参考:
http://www.tuicool.com/articles/mIzeUrU
思路:
因为 nums 和 i,j 分开为两个函数的参数,调用方式又是 numArray.sumRange(1, 2)
所以要建立两个函数之间的联系
def __init__(self, nums) 中得到 从 nums[0] 到 nums[i-1] 的和 sum[i-1]
def sumRange(self, i, j) 得到 nums[i] 到 nums[j] 的和 sum[j]-sum[i-1]
class NumArray(object):
def __init__(self, nums):
"""
initialize your data structure here.
:type nums: List[int]
"""
#if nums is None:
#return None
self.sum=[0 for i in range(len(nums)+1)] #记得加self AttributeError: 'NumArray' object has no attribute 'sum'
#self.sum[0]=nums[0] #需要在nums[0]之前加一个sum=0位,IndexError: list index out of range
for i in range(len(nums)):
self.sum[i+1]=self.sum[i]+nums[i]
def sumRange(self, i, j):
"""
sum of elements nums[i..j], inclusive.
:type i: int
:type j: int
:rtype: int
"""
return self.sum[j+1]-self.sum[i]
# Your NumArray object will be instantiated and called as such:
# numArray = NumArray(nums)
# numArray.sumRange(0, 1)
# numArray.sumRange(1, 2)