Menu
CoddyTech

Range Sum Query

LeichtPräfixsummenpython iconjava iconcpp iconc iconjs icon+10

Du erhältst ein Array aus ganzen Zahlen nums, das sich nie ändert, und eine Liste von queries. Jede Abfrage ist ein Paar [left, right] aus 0-basierten Indizes und fragt nach nums[left] + nums[left+1] + ... + nums[right], wobei beide Endpunkte eingeschlossen sind. Gib die Antworten in derselben Reihenfolge wie die Abfragen zurück.

Funktion

sumRange(nums: integer-array, queries: integer-2d-array) → integer-array
numsinteger-array
das Integer-Array, das für jede Abfrage gleich ist
queriesinteger-2d-array
die zu addierenden Bereiche, jeweils ein Paar [left, right] mit left ≤ right
Gibt zurückinteger-array
die Summe jedes Bereichs, eine pro Abfrage, in der Reihenfolge der Abfragen

Einschränkungen

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i] ≤ 104
  • 1 ≤ queries.length ≤ 1500
  • 0 ≤ left ≤ right < nums.length für jede Abfrage [left, right]

Beispiele

Eingabe
nums = [3, -2, 5, 1, -4, 6]queries = [[0, 2], [1, 4], [3, 3]]
Ausgabe
[6, 0, 1]
Erklärung
Die Indizes 0 bis 2 ergeben 3 + (-2) + 5 = 6. Die Indizes 1 bis 4 ergeben -2 + 5 + 1 + (-4) = 0. Der Bereich [3, 3] enthält den einzelnen Wert 1.
challenge icon

Weiterführende Frage

Wenn die Zahlen ein Raster bilden und jede Abfrage nach der Summe eines Rechtecks fragt, wie würdest du Präfixsummen erweitern, um jede Abfrage in konstanter Zeit zu beantworten?

Code zurücksetzen
def sumRange(nums, queries):
    # Schreibe hier Code

Test #1

Test #2

Argumente

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

Erwartete Ausgabe

[6, 0, 1]