美文网首页
[每日一题]703. Kth Largest Element i

[每日一题]703. Kth Largest Element i

作者: 何学诚 | 来源:发表于2019-04-07 19:55 被阅读0次
1.这是一道使用堆的题目,就是记录最大的前K个数,然后返回。

链接:https://leetcode.com/problems/kth-largest-element-in-a-stream/

703.kth-largest-element-in-a-stream.png

这题很简单,就是每次输入一个数,然后每次都返回第K大的那个数。

我们使用最小堆,去保存最大的K个数,因为使用heapq函数,所以每次不需要管堆内部的操作。
ps:不用最大堆是因为内置的heapq函数只实现了最小堆。

2.题解:
import heapq
class KthLargest(object):

    def __init__(self, k, nums):
        nums.sort()
        self.heap = nums[-k:]  # 找出最大的k个
        self.k = k
        heapq.heapify(self.heap)  # 放入堆中

    def add(self, val):
        # 如果堆没有填满
        if len(self.heap) < self.k:
            heapq.heappush(self.heap, val)
        elif val >= self.heap[0]:
            # 填满了,添加新的元素.
            heapq.heappop(self.heap)
            heapq.heappush(self.heap, val)
        # print(self.heap[0])
        return self.heap[0]
3.完整代码

查看链接:
https://github.com/Wind0ranger/LeetcodeLearn/blob/master/3-heap/703-kth-largest-element-in-a-stream.py

相关文章

网友评论

      本文标题:[每日一题]703. Kth Largest Element i

      本文链接:https://www.haomeiwen.com/subject/rfceiqtx.html