• 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)
  • 相关阅读:
    牛客网PAT练习场-有几个PAT
    牛客网PAT练习场-到底买不买
    增量数据捕获cdc
    windows terminal 笔记
    ubuntu文件夹颜色设置及vim颜色配置
    windows sub system 如何修改root密码
    Intellij IDEA 一个Tomcat启动多个Web的设置
    What is “Deploy applications configured in Tomcat instance” in IntelliJidea
    接口批量测试
    使用soupUI,jemter 测试http接口的方法
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13199459.html
Copyright © 2020-2023  润新知