Menu
CoddyTech

Range Sum Query

Тебе дан неизменяемый массив целых чисел nums и список queries. Каждый запрос — это пара [left, right] индексов, отсчитываемых от 0, и он запрашивает сумму 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.

lock icon+14 скрытых тестов при отправке

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]