原题
【LintCode|LintCode 545 [Top k Largest Number II]】实现一个数据结构,提供下面两个接口样例
1.add(number) 添加一个元素
2.topk() 返回前K大的数
s = new Solution(3);
>> create a new data structure.
s.add(3)
s.add(10)
s.topk()
>> return [10, 3]
s.add(1000)
s.add(-99)
s.topk()
>> return [1000, 10, 3]
s.add(4)
s.topk()
>> return [1000, 10, 4]
s.add(100)
s.topk()
>> return [1000, 100, 10]
sorted(nums, reverse=True)
import Queueclass Solution:# @param {int} k an integer
def __init__(self, k):
# initialize your data structure here.
self.size = k
self.minHeap = Queue.PriorityQueue()# @param {int} num an integer
def add(self, num):
# Write your code here
if self.minHeap.qsize() < self.size:
self.minHeap.put(num)
elif num > self.minHeap.queue[0]:
self.minHeap.get()
self.minHeap.put(num)# @return {int[]} the top k largest numbers
def topk(self):
# Write your code here
return sorted(self.minHeap.queue, reverse=True)