Menu
CoddyTech

Kth Largest Element in a Stream

简单堆python iconjava iconcpp iconc iconjs icon+10

一个整数流以 nums 中的值开始。随后,adds 中的值会逐个到达。每次有新值到达后,都记录目前为止所有值中第 k 大的值,相同的值分别计数。按顺序返回记录的值,每个 adds 中的值对应一个记录。

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。然后,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]