class NumArray:
# time O(N) space O(1)
def __init__(self, nums: List[int]):
n = len(nums)
self.psum = [0] * (n+1)
for i in range(n):
self.psum[i+1] = self.psum[i] + nums[i]# psun[i]: sum of num[0]++num[i]
def sumRange(self, i: int, j: int) -> int:
return self.psum[j+1] - self.psum[i]
#################################################################################
class NumArray:
"""
main idea: prefix sum
"""
def __init__(self, A: List[int]):
"""tc O(N) sc O(N) => can optimized to sc O(1)
"""
n = len(A)
self.psum = [None] * n
self.psum[0] = A[0]
for i in range(1,n):
self.psum[i] = self.psum[i-1] + A[i]
def sumRange(self, left: int, right: int) -> int:
""" tc O(1) sc O(1)
"""
if left == 0:
return self.psum[right]
return self.psum[right] - self.psum[left-1]