Menu
CoddyTech

Kth Largest Element in a Stream

FacileHeappython iconjava iconcpp iconc iconjs icon+10

Un flusso di numeri interi inizia con i valori in nums. Poi i valori di adds arrivano uno alla volta. Dopo ogni arrivo, registra il valore più grande in kª posizione tra tutti quelli visti finora, contando separatamente i valori uguali. Restituisci i valori registrati nell'ordine, uno per ogni valore di adds.

nums contiene almeno k-1 valori, quindi dopo il primo arrivo ci sono sempre almeno k valori tra cui scegliere.

Funzione

kthLargestStream(k: integer, nums: integer-array, adds: integer-array) → integer-array
kinteger
la posizione da riportare, 1 per il valore più grande
numsinteger-array
i valori già presenti nel flusso
addsinteger-array
i valori che arrivano, in ordine
Restituisceinteger-array
il k-esimo valore più grande dopo ogni arrivo

Vincoli

  • 1 ≤ nums.length ≤ 104
  • 1 ≤ adds.length ≤ 104
  • 1 ≤ k ≤ nums.length + 1
  • -104 ≤ nums[i], adds[i] ≤ 104
  • nums può essere in qualsiasi ordine e i valori uguali vengono considerati valori distinti.

Esempi

Input
k = 3nums = [7, 1, 5]adds = [3, 9, 6, 2, 8]
Output
[3, 5, 6, 6, 7]
Spiegazione
Dopo 3 arriva il terzo più grande tra 7, 5, 3 e 1: è 3. Poi 9 lo porta a 5, 6 lo porta a 6, 2 non cambia nulla e 8 lo porta a 7 (9, 8, 7).
challenge icon

Per approfondire

Come risponderesti alla stessa domanda se fosse possibile anche rimuovere valori dal flusso?

Ripristina il codice
def kthLargestStream(k, nums, adds):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

[3, 5, 6, 6, 7]