Menu
CoddyTech

Range Sum Query

LeichtPräfixsummenpython iconjava iconcpp iconc iconjs icon+10

Du erhältst ein Array aus Ganzzahlen nums, das sich nie ändert, und eine Liste von queries. Jede Abfrage ist ein Paar [left, right] von 0-basierten Indizes und fragt nach nums[left] + nums[left+1] + ... + nums[right], wobei beide Enden 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] ist der einzelne Wert 1.

lock icon+14 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Jetzt bilden die Zahlen ein Raster, und jede Abfrage fragt nach der Summe eines Rechtecks, das durch zwei Ecken definiert ist. Wie würdest du Präfixsummen erweitern, um jede Abfrage mit einer konstanten Anzahl von Operationen zu beantworten?

Code zurücksetzen
def sumRange(nums, queries):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Eingabe

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

Erwartet

[6, 0, 1]