每日一题力扣303 前缀和

给定一个整数数组  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在内的和

 

posted @ 2021-03-03 16:42  小千北同学超爱写代码  阅读(89)  评论(0编辑  收藏  举报