zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    csuoj-1004-Xi and Bo
    csuoj-1003-UC Browser
    网络命令
    linux网络配置
    java面向对象
    java类 面向对象
    java方法 Scanner、Random类
    java集合
    java数组
    java流程控制语句
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10296536.html
Copyright © 2011-2022 走看看