Menu
CoddyTech

Kth Largest Element in a Stream

LeichtHeappython iconjava iconcpp iconc iconjs icon+10

Ein Strom von Ganzzahlen beginnt mit den Werten in nums. Dann treffen die Werte von adds nacheinander ein. Erfasse nach jedem Eintreffen den k-größten Wert unter allen bisher gesehenen Werten, wobei gleiche Werte einzeln gezählt werden. Gib die erfassten Werte der Reihe nach zurück, einen für jeden Wert von adds.

nums enthält mindestens k-1 Werte, sodass nach dem ersten Eintreffen immer mindestens k Werte zur Auswahl stehen.

Funktion

kthLargestStream(k: integer, nums: integer-array, adds: integer-array) → integer-array
kinteger
der Rang, der ausgegeben werden soll, 1 für den größten Wert
numsinteger-array
die Werte, die sich bereits im Stream befinden
addsinteger-array
die Werte, die der Reihe nach eintreffen
Gibt zurückinteger-array
der k-größte Wert nach jeder Ankunft

Einschränkungen

  • 1 ≤ nums.length ≤ 104
  • 1 ≤ adds.length ≤ 104
  • 1 ≤ k ≤ nums.length + 1
  • -104 ≤ nums[i], adds[i] ≤ 104
  • nums kann in beliebiger Reihenfolge angeordnet sein, und gleiche Werte zählen als eigene Werte.

Beispiele

Eingabe
k = 3nums = [7, 1, 5]adds = [3, 9, 6, 2, 8]
Ausgabe
[3, 5, 6, 6, 7]
Erklärung
Nach 3 kommt die drittgrößte Zahl von 7, 5, 3 und 1: 3. Dann erhöht 9 sie auf 5, 6 erhöht sie auf 6, 2 ändert nichts, und 8 erhöht sie auf 7 (9, 8, 7).
challenge icon

Weiterführende Frage

Wie würdest du dieselbe Frage beantworten, wenn Werte auch aus dem Datenstrom entfernt werden könnten?

Code zurücksetzen
def kthLargestStream(k, nums, adds):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

k = 3
nums = [7, 1, 5]
adds = [3, 9, 6, 2, 8]

Erwartete Ausgabe

[3, 5, 6, 6, 7]