Menu
CoddyTech

Range Sum Query

简单前缀和python iconjava iconcpp iconc iconjs icon+10

你会得到一个不会改变的整数数组 nums 和一个 queries 列表。每个查询都是一对从 0 开始的索引 [left, right],它要求计算 nums[left] + nums[left+1] + ... + nums[right],左右两端都包含在内。按查询的相同顺序返回答案。

函数

sumRange(nums: integer-array, queries: integer-2d-array) → integer-array
numsinteger-array
每次查询都相同的整数数组
queriesinteger-2d-array
要相加的区间,每个区间都是一对 [left, right],其中 left ≤ right
返回值integer-array
每个范围的总和,每个查询对应一个,并按查询顺序排列

约束条件

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i] ≤ 104
  • 1 ≤ queries.length ≤ 1500
  • 0 ≤ left ≤ right < nums.length 对于每个查询 [left, right]

示例

输入
nums = [3, -2, 5, 1, -4, 6]queries = [[0, 2], [1, 4], [3, 3]]
输出
[6, 0, 1]
解释
索引 0 到 2 中的值之和为 3 + (-2) + 5 = 6。索引 1 到 4 中的值之和为 -2 + 5 + 1 + (-4) = 0。范围 [3, 3] 中只有一个值:1。
challenge icon

进阶

如果这些数字组成一个网格,并且每次查询都要求计算一个矩形区域的总和,你会如何扩展前缀和,以便在常数时间内回答每次查询?

重置代码
def sumRange(nums, queries):
    # 在这里编写代码

测试 #1

测试 #2

参数

nums = [3, -2, 5, 1, -4, 6]
queries = [[0, 2], [1, 4], [3, 3]]

预期输出

[6, 0, 1]