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