zoukankan      html  css  js  c++  java
  • 545. 前K大数 II

    545. 前K大数 II

    中文English

    实现一个数据结构,提供下面两个接口
    1.add(number) 添加一个元素
    2.topk() 返回前K大的数

    样例

    样例1

    输入: 
    s = new Solution(3);
    s.add(3)
    s.add(10)
    s.topk()
    s.add(1000)
    s.add(-99)
    s.topk()
    s.add(4)
    s.topk()
    s.add(100)
    s.topk()
    		
    输出: 
    [10, 3]
    [1000, 10, 3]
    [1000, 10, 4]
    [1000, 100, 10]
    
    解释:
    s = new Solution(3);
    >> 生成了一个新的数据结构, 并且 k = 3.
    s.add(3)
    s.add(10)
    s.topk()
    >> 返回 [10, 3]
    s.add(1000)
    s.add(-99)
    s.topk()
    >> 返回 [1000, 10, 3]
    s.add(4)
    s.topk()
    >> 返回 [1000, 10, 4]
    s.add(100)
    s.topk()
    >> 返回 [1000, 100, 10]
    

    样例2

    输入: 
    s = new Solution(1);
    s.add(3)
    s.add(10)
    s.topk()
    s.topk()
    
    输出: 
    [10]
    [10]
    
    解释:
    s = new Solution(1);
    >> 生成了一个新的数据结构, 并且 k = 1.
    s.add(3)
    s.add(10)
    s.topk()
    >> 返回 [10]
    s.topk()
    >> 返回 [10]
    
     
     
    输入测试数据 (每行一个参数)如何理解测试数据?

     方法一:列表 + sorted排序

    class Solution:
        """
        @param: k: An integer
        """
        def __init__(self, k):
            # do intialization if necessary
            self.k = k 
            self.array = []
    
        """
        @param: num: Number to be added
        @return: nothing
        """
        def add(self, num):
            # write your code here
            self.array.append(num)
    
        """
        @return: Top k element
        """
        def topk(self):
            # write your code here
            
            array = []
            for i in self.array:
                array.append(i)
            
            return sorted(array)[:: -1][: self.k]

    方法二:堆方式实现

    #堆方式实现
    import heapq
    
    class Solution:
        """
        @param: k: An integer
        """
        def __init__(self, k):
            # do intialization if necessary
            self.k = k 
            self.heap = []
    
        """
        @param: num: Number to be added
        @return: nothing
        """
        def add(self, num):
            # write your code here
            heapq.heappush(self.heap, num)
    
        """
        @return: Top k element
        """
        def topk(self):
            # write your code here
            
            return heapq.nlargest(self.k, self.heap)
  • 相关阅读:
    元素定位不到的问题,Timeout,nosuch element,unable locate等
    webpack的安装
    Mysql修改表
    Mysq表的创建和l数据类型
    Mysql的库操作
    面向对象的序列化和反序列化
    类的关键字:final、const
    面向对象接口以及和继承的混合案例
    DOM创建移除替换元素
    抽象类
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13199459.html
Copyright © 2011-2022 走看看