返回資料流中第k大的元素 Java

2021-09-12 14:27:32 字數 776 閱讀 4244

設計乙個類來查詢流中第k大的元素。注意,它是排序後第k大的元素,而不是第k個不同的元素。

您的kthlargest類將有乙個建構函式,它接受乙個整數k和乙個整數陣列nums,後者包含來自流的初始元素。對於每個對方法kthmaximum的呼叫。新增,返回表示流中第k大元素的元素。

examples:

int k = 3;

int arr = [4,5,8,2];

kthlargest kthlargest = new kthlargest(3, arr);

kthlargest.add(3); // returns 4

kthlargest.add(5); // returns 5

kthlargest.add(10); // returns 5

kthlargest.add(9); // returns 8

kthlargest.add(4); // returns 8

可以使用優先順序佇列,小頂堆,維護佇列最大數量為k,每次add的時候,先判斷佇列是否已滿,沒滿直接加入,滿了就將要加入的數與堆頂的數(第k大的數)進行比較,沒有堆頂大則不插入到堆中,比堆頂大先將堆頂元素彈出,如何插入該數,最後返回堆頂元素。

**:

class kthlargest else}}

}public int add (int val) else if(val > queue.peek())

return queue.peek();

}}

python返回資料流中第n大的元素

import random import heapq 使用隨機數模擬資料流的生成 def productstreamnum return random.randint 1,1000 使用python的heapq模組進行資料處理,當堆中元素不足n個時,直接向堆插入元素,當堆中元素為n時開始進行判斷,取...

703 資料流中的第K大元素

設計乙個找到資料流中第k大元素的類 class 注意是排序後的第k大元素,不是第k個不同的元素。你的 kthlargest 類需要乙個同時接收整數 k 和整數陣列nums 的構造器,它包含資料流中的初始元素。每次呼叫 kthlargest.add,返回當前資料流中第k大的元素。示例 int k 3 ...

703 資料流中的第K大元素

設計乙個找到資料流中第k大元素的類 class 注意是排序後的第k大元素,不是第k個不同的元素。你的kthlargest類需要乙個同時接收整數k和整數陣列nums的構造器,它包含資料流中的初始元素。每次呼叫kthlargest.add,返回當前資料流中第k大的元素。示例 int k 3 int ar...