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
廣告