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