703. Kth Largest Element in a Stream

Posted captain-dl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了703. Kth Largest Element in a Stream相关的知识,希望对你有一定的参考价值。

题目来源:

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

 
自我感觉难度/真实难度:
 
题意:

这个题目的意思解读了半天,没搞明白什么意思,后来画了一下图,一下子就明了

分析:
 技术分享图片

 

自己的代码:
代码效率/结果:
 
优秀代码:
class KthLargest:

    def __init__(self, k, nums):
        """
        :type k: int
        :type nums: List[int]
        """
        self.pool=nums
        self.size=len(self.pool)
        self.k=k
        heapq.heapify(self.pool)
        while self.size>k:
            heapq.heappop(self.pool)
            self.size-=1

    def add(self, val):
        """
        :type val: int
        :rtype: int
        """
        if self.size<self.k:
            heapq.heappush(self.pool,val)
            self.size+=1
        elif val>self.pool[0]:
            heapq.heapreplace(self.pool,val)
        return self.pool[0]

 

代码效率/结果:

 

 
自己优化后的代码:
 
反思改进策略:

1.熟悉了一下怎么使用heapqd的常规函数

2.最后这个

if self.size<self.k:
是不是可以省略呢,size是不是不可能大于K,因为初始化的时候,数组就只有K那么大?后面用的replace,不会变大的
验证了一下,不行的:因为输入的list,有可能是空的,这样会报错,out of index





以上是关于703. Kth Largest Element in a Stream的主要内容,如果未能解决你的问题,请参考以下文章

703. Kth Largest Element in a Stream

703. Kth Largest Element in a Stream

Leetcode 703题数据流中的第K大元素(Kth Largest Element in a Stream)Java语言求解

leetcode Kth Largest Element in a Stream——要熟悉heapq使用

LeetCode算法题-Kth Largest Element in a Stream(Java实现)

Kth Largest Element