Menu
CoddyTech

Find Median from Data Stream

TrudneKopiecpython iconjava iconcpp iconc iconjs icon+10

Zaprojektuj strukturę z dwiema operacjami: addNum przechowuje liczbę całkowitą, a findMedian zwraca medianę wszystkich dotychczas przechowywanych wartości. Mediana przy nieparzystej liczbie wartości to wartość środkowa; przy parzystej liczbie wartości jest to średnia dwóch środkowych wartości.

Operacja i to ops[i], a values[i] zawiera liczbę dla addNum i 0 dla findMedian. Wykonaj je po kolei na pustej strukturze i zwróć po jednym ciągu znaków dla każdej operacji: "null" dla addNum, medianę dla findMedian. Zapisz medianę na przykład jako "3", "2.5" lub "-0.5": bez separatora dziesiętnego dla liczby całkowitej oraz zero jako "0", nigdy jako "-0".

Funkcja

medianStreamOps(ops: string-array, values: integer-array) → string-array
opsstring-array
operacje w kolejności, w jakiej są wykonywane
valuesinteger-array
liczba dla każdego addNum, 0 dla każdego findMedian
Zwracastring-array
jedna odpowiedź na operację, jako tekst

Ograniczenia

  • 1 ≤ ops.length ≤ 3000
  • values.length == ops.length
  • Każde ops[i] to addNum lub findMedian.
  • -105 ≤ values[i] ≤ 105 dla addNum, a values[i] == 0 dla findMedian.
  • findMedian jest wywoływane dopiero po co najmniej jednym wywołaniu addNum.

Przykłady

Wejście
ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]values = [5, 0, 1, 0, 8, 0, 3, 0]
Wyjście
["null", "5", "null", "3", "null", "5", "null", "4"]
Wyjaśnienie
Dla 1 i 5 mediana wynosi (1 + 5) / 2 = 3. Dla 1, 5 i 8 wynosi 5, a dla 1, 3, 5 i 8 wynosi (3 + 5) / 2 = 4.
challenge icon

Pytanie dodatkowe

Gdyby każda wartość mieściła się w przedziale od 0 do 100, jak można by sprawić, aby obie operacje działały w czasie stałym?

Zresetuj kod
def medianStreamOps(ops, values):
    # Wpisz tutaj kod

Test #1

Test #2

Argumenty

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

Oczekiwany wynik

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