# 303. Range Sum Query - Immutable 区域和检索 - 数组不可变

@TOC

## # 题目描述

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.

## # 解题方法

### # 保存累积和

``````class NumArray(object):

def __init__(self, nums):
"""
:type nums: List[int]
"""
self.sums = [0] * len(nums)
total = 0
for i, num in enumerate(nums):
total += num
self.sums[i] = total

def sumRange(self, i, j):
"""
:type i: int
:type j: int
:rtype: int
"""
if i == 0:
return self.sums[j]
else:
return self.sums[j] - self.sums[i - 1]

# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)
``````

``````class NumArray(object):

def __init__(self, nums):
"""
:type nums: List[int]
"""
N = len(nums)
self.sums = [0] * (N + 1)
for i in range(1, N + 1):
self.sums[i] = self.sums[i - 1] + nums[i - 1]

def sumRange(self, i, j):
"""
:type i: int
:type j: int
:rtype: int
"""
return self.sums[j + 1] - self.sums[i]

# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)
``````

## # 日期

2018 年 2 月 4 日 2018 年 11 月 24 日 —— 周六快乐