码迷,mamicode.com
首页 > 其他好文 > 详细

703. Kth Largest Element in a Stream

时间:2019-01-20 23:32:26      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:replace   +=   结果   bsp   大于   col   不可   ems   策略   

题目来源:

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

标签:replace   +=   结果   bsp   大于   col   不可   ems   策略   

原文地址:https://www.cnblogs.com/captain-dl/p/10296536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!