Menu
CoddyTech

Find Median from Data Stream

SulitHeappython iconjava iconcpp iconc iconjs icon+10

Rancang sebuah struktur dengan dua operasi: addNum menyimpan sebuah bilangan bulat, dan findMedian mengembalikan median dari semua nilai yang telah disimpan sejauh ini. Median untuk jumlah nilai ganjil adalah nilai tengah; untuk jumlah nilai genap, median adalah rata-rata dari dua nilai tengah.

Operasi i adalah ops[i], dengan values[i] berisi angka untuk addNum dan 0 untuk findMedian. Jalankan operasi secara berurutan pada struktur kosong dan kembalikan satu string untuk setiap operasi: "null" untuk addNum, dan median untuk findMedian. Tulis median seperti "3", "2.5" atau "-0.5": tanpa tanda desimal untuk bilangan bulat, dan nol sebagai "0", jangan pernah "-0".

Fungsi

medianStreamOps(ops: string-array, values: integer-array) → string-array
opsstring-array
operasi, sesuai urutan pelaksanaannya
valuesinteger-array
angka untuk setiap addNum, 0 untuk setiap findMedian
Mengembalikanstring-array
satu jawaban untuk setiap operasi, sebagai teks

Batasan

  • 1 ≤ ops.length ≤ 3000
  • values.length == ops.length
  • Setiap ops[i] adalah addNum atau findMedian.
  • -105 ≤ values[i] ≤ 105 untuk addNum, dan values[i] == 0 untuk findMedian.
  • findMedian hanya dipanggil setelah setidaknya satu addNum.

Contoh

Input
ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]values = [5, 0, 1, 0, 8, 0, 3, 0]
Output
["null", "5", "null", "3", "null", "5", "null", "4"]
Penjelasan
Dengan 1 dan 5, mediannya adalah (1 + 5) / 2 = 3. Dengan 1, 5, dan 8, mediannya adalah 5, dan dengan 1, 3, 5, dan 8, mediannya adalah (3 + 5) / 2 = 4.
challenge icon

Pertanyaan lanjutan

Jika setiap nilai berada di antara 0 dan 100, bagaimana kamu bisa membuat kedua operasi berjalan dalam waktu konstan?

Reset kode
def medianStreamOps(ops, values):
    # Tulis kodemu di sini

Tes #1

Tes #2

Argumen

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

Output yang diharapkan

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