Python 中流中第 K 大元素

pythonserver side programmingprogramming更新于 2023/11/10 1:12:00

假设我们想设计一个类来查找流中第 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
    • 在数组末尾插入 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

相关文章