Menu
CoddyTech

Kth Largest Element in a Stream

ŁatweKopiecpython iconjava iconcpp iconc iconjs icon+10

Strumień liczb całkowitych zaczyna się od wartości w nums. Następnie wartości z adds napływają pojedynczo. Po każdym napływie zapisz k-tą największą wartość spośród wszystkich dotychczasowych, licząc osobno równe wartości. Zwróć zapisane wartości w kolejności, po jednej dla każdej wartości z adds.

nums zawiera co najmniej k-1 wartości, więc po pierwszym napływie zawsze jest co najmniej k wartości do wyboru.

Funkcja

kthLargestStream(k: integer, nums: integer-array, adds: integer-array) → integer-array
kinteger
ranga do zgłoszenia, 1 dla największej wartości
numsinteger-array
wartości już znajdujące się w strumieniu
addsinteger-array
wartości, które przychodzą, w kolejności
Zwracainteger-array
k-ta największa wartość po każdym nowym elemencie

Ograniczenia

  • 1 ≤ nums.length ≤ 104
  • 1 ≤ adds.length ≤ 104
  • 1 ≤ k ≤ nums.length + 1
  • -104 ≤ nums[i], adds[i] ≤ 104
  • nums mogą być w dowolnej kolejności, a równe wartości są liczone jako osobne wartości.

Przykłady

Wejście
k = 3nums = [7, 1, 5]adds = [3, 9, 6, 2, 8]
Wyjście
[3, 5, 6, 6, 7]
Wyjaśnienie
Po 3 pojawia się trzecia co do wielkości liczba spośród 7, 5, 3 i 1: 3. Następnie 9 podnosi ją do 5, 6 podnosi ją do 6, 2 niczego nie zmienia, a 8 podnosi ją do 7 (9, 8, 7).
challenge icon

Pytanie dodatkowe

Jak odpowiedziałbyś na to samo pytanie, gdyby wartości można było również usuwać ze strumienia?

Zresetuj kod
def kthLargestStream(k, nums, adds):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

[3, 5, 6, 6, 7]