题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是要求实现一个类,这个类能够返回数组中任意一个闭区间的数值和。

思路分享

  • 这是前缀和的模板题,所谓前缀和的计算,正如其名,就是把数组从左往右一个个数值累加并记录。

    https://leetcode.cn/problems/range-sum-query-immutable/solutions/2693498/qian-zhui-he-ji-qi-kuo-zhan-fu-ti-dan-py-vaar/

  • 实现方式很简单,但是有一点需要特别注意,就是留出第一位的 0.如果采用第一位就放第一位的数值,那么就需要特别处理闭区间左部为 0 的情况,但是如果第一位置零,第二位放第一个数值,第三位放前两个数值,这样子下去,取区间和就只要调整一下下标加一即可。

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class NumArray:

def __init__(self, nums: List[int]):
s = [0] * (len(nums)+1)
for i,x in enumerate(nums):
s[i+1] = s[i] + x
self.s = s


def sumRange(self, left: int, right: int) -> int:
return self.s[right+1]-self.s[left]


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