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.
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]