Python 中流中的第 K 大元素


假设我们想要设计一个类来查找流中的第 k 大元素。它是经过排序的第 k 大元素,而不是第 k 个不同的元素。

KthLargest 类将有一个构造函数,该函数接受一个整数 k 和一个包含流中初始元素的数组 nums。对于 KthLargest.add 方法的每次调用,都将返回表示流中第 k 大元素的元素。

因此,如果输入类似 k = 3,初始元素 = [4,5,8,2],然后调用 add(3),add(5),add(10),add(9),add(4),则输出将分别是 4、5、5、8、8。

为了解决这个问题,我们将按照以下步骤进行操作:

  • 定义初始化程序,它将采用 k、nums
    • array := nums
  • 定义一个函数 add()。它将采用 val
    • 在 array 末尾插入 val
    • 对数组进行排序
    • 返回 array[array 大小 - k]

让我们看看以下实现以获得更好的理解:

示例

 在线演示

class KthLargest:
   def __init__(self, k, nums):
      self.array = nums
      self.k = k
   def add(self, val):
      self.array.append(val)
      self.array.sort()
      return self.array[len(self.array)-self.k]
ob = KthLargest(3, [4,5,8,2])
print(ob.add(3))
print(ob.add(5))
print(ob.add(10))
print(ob.add(9))
print(ob.add(4))

输入

ob.add(3)
ob.add(5)
ob.add(10)
ob.add(9)
ob.add(4)

输出

4
5
5
8
8

更新日期:2020 年 7 月 4 日

492 次浏览

开启您的职业生涯

完成课程以获得认证资格

开始学习
广告
© . All rights reserved.