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

更新日期:2020 年 7 月 4 日

492 次瀏覽

開啟您的職業生涯

完成課程以獲得認證資格

開始學習
廣告