Python流中的Kth最大元素

假设我们要设计一个类以在流中找到第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

    • 数组:= nums

  • 定义一个功能add()。这将需要

    • 在数组末尾插入val

    • 对数组排序

    • 返回数组[数组-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