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