Menu
CoddyTech

Kth Largest Element in a Stream

やさしいヒープpython iconjava iconcpp iconc iconjs icon+10

整数のストリームは、numsの値から始まります。次に、addsの値が1つずつ到着します。各値が到着するたびに、同じ値も別々に数え、これまでに見たすべての値の中でk番目に大きい値を記録します。addsの各値に対して1つずつ、記録した値を順番に返します。

numsには少なくともk-1個の値が含まれているため、最初の値が到着した後は、常に選択できる値が少なくともk個あります。

関数

kthLargestStream(k: integer, nums: integer-array, adds: integer-array) → integer-array
kinteger
報告する順位。最大値の場合は1
numsinteger-array
ストリームにすでに含まれている値
addsinteger-array
順番に届く値
戻り値integer-array
各要素の到着後の k 番目に大きい値

制約

  • 1 ≤ nums.length ≤ 104
  • 1 ≤ adds.length ≤ 104
  • 1 ≤ k ≤ nums.length + 1
  • -104 ≤ nums[i], adds[i] ≤ 104
  • nums はどのような順序でもよく、同じ値もそれぞれ別の値として数えます。

例

入力
k = 3nums = [7, 1, 5]adds = [3, 9, 6, 2, 8]
出力
[3, 5, 6, 6, 7]
説明
3の後には、7、5、3、1の中で3番目に大きい数である3が来ます。次に9によって5に増え、6によって6に増え、2では変化せず、8によって7に増えます(9、8、7)。
challenge icon

発展問題

ストリームから値を削除することもできるとしたら、同じ質問にどう答えますか?

コードをリセット
def kthLargestStream(k, nums, adds):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

[3, 5, 6, 6, 7]