Menu
CoddyTech

Range Sum Query

Otrzymujesz tablicę liczb całkowitych nums, która nigdy się nie zmienia, oraz listę queries. Każde zapytanie to para [left, right] indeksów liczonych od 0 i dotyczy wartości nums[left] + nums[left+1] + ... + nums[right], z uwzględnieniem obu końców. Zwróć odpowiedzi w tej samej kolejności co zapytania.

Funkcja

sumRange(nums: integer-array, queries: integer-2d-array) → integer-array
numsinteger-array
tablica liczb całkowitych, taka sama dla każdego zapytania
queriesinteger-2d-array
przedziały do zsumowania, każdy jako para [left, right], gdzie left ≤ right
Zwracainteger-array
suma każdego zakresu, po jednym na zapytanie, w kolejności zapytań

Ograniczenia

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i] ≤ 104
  • 1 ≤ queries.length ≤ 1500
  • 0 ≤ left ≤ right < nums.length dla każdego zapytania [left, right]

Przykłady

Wejście
nums = [3, -2, 5, 1, -4, 6]queries = [[0, 2], [1, 4], [3, 3]]
Wyjście
[6, 0, 1]
Wyjaśnienie
Indeksy od 0 do 2 zawierają 3 + (-2) + 5 = 6. Indeksy od 1 do 4 zawierają -2 + 5 + 1 + (-4) = 0. Zakres [3, 3] to pojedyncza wartość 1.

lock icon+14 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Teraz liczby tworzą siatkę, a każde zapytanie dotyczy sumy prostokąta wyznaczonego przez dwa przeciwległe wierzchołki. Jak rozszerzyć sumy prefiksowe, aby odpowiadać na każde zapytanie w stałej liczbie operacji?

Zresetuj kod
def sumRange(nums, queries):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

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

Oczekiwane

[6, 0, 1]