Menu
CoddyTech

Find Median from Data Stream

SchwerHeappython iconjava iconcpp iconc iconjs icon+10

Entwirf eine Struktur mit zwei Operationen: addNum speichert eine Ganzzahl, und findMedian gibt den Median aller bisher gespeicherten Werte zurück. Bei einer ungeraden Anzahl ist der Median der mittlere Wert; bei einer geraden Anzahl ist er der Durchschnitt der beiden mittleren Werte.

Operation i ist ops[i], wobei values[i] bei addNum die Zahl und bei findMedian 0 enthält. Führe sie der Reihe nach auf einer leeren Struktur aus und gib für jede Operation einen String zurück: "null" für addNum, den Median für findMedian. Gib den Median beispielsweise als "3", "2.5" oder "-0.5" aus: ohne Dezimalpunkt bei einer ganzen Zahl und null als "0", niemals als "-0".

Funktion

medianStreamOps(ops: string-array, values: integer-array) → string-array
opsstring-array
die Operationen in der Reihenfolge, in der sie ausgeführt werden
valuesinteger-array
die Zahl für jedes addNum, 0 für jedes findMedian
Gibt zurückstring-array
eine Antwort pro Operation, als Text

Einschränkungen

  • 1 ≤ ops.length ≤ 3000
  • values.length == ops.length
  • Jedes ops[i] ist addNum oder findMedian.
  • -105 ≤ values[i] ≤ 105 für addNum und values[i] == 0 für findMedian.
  • findMedian wird erst aufgerufen, nachdem mindestens ein addNum aufgerufen wurde.

Beispiele

Eingabe
ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]values = [5, 0, 1, 0, 8, 0, 3, 0]
Ausgabe
["null", "5", "null", "3", "null", "5", "null", "4"]
Erklärung
Bei 1 und 5 ist der Median (1 + 5) / 2 = 3. Bei 1, 5 und 8 ist er 5, und bei 1, 3, 5 und 8 ist er (3 + 5) / 2 = 4.
challenge icon

Weiterführende Frage

Wenn jeder Wert zwischen 0 und 100 läge, wie könntest du beide Operationen in konstanter Zeit ausführen?

Code zurücksetzen
def medianStreamOps(ops, values):
    # Schreibe hier den Code

Test #1

Test #2

Argumente

ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]
values = [5, 0, 1, 0, 8, 0, 3, 0]

Erwartete Ausgabe

["null", "5", "null", "3", "null", "5", "null", "4"]