、
给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
实现 NumArray 类:
NumArray(int[] nums) 使用数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/range-sum-query-immutable
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
正解:
- 时间复杂度:构造函数的时间复杂度是 O(N)O(N),
sumRange
函数调用的时间复杂度是 O(1)O(1) - 空间复杂度:O(N)O(N)。
class NumArray: def __init__(self, nums: List[int]): N=len(nums) self.presum=[0]*(N+1)#前缀和presum中是存储数组nums左边的和 for i in range(N):#这里是重点不要弄错了 self.presum[i+1]=self.presum[i]+nums[i] def sumRange(self, i: int, j: int) -> int: return self.presum[j+1]-self.presum[i]#得到的是包含i,j在内的和