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使用