美文网首页
[每日一题]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