• 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)
  • 相关阅读:
    RabbitMQ安全相关的网络资源介绍
    种植玉米,发酵与生物燃料的制作
    一致哈希算法Java实现
    添加xml文件编辑语法提示
    【转】10分钟搭建NDK的Android开发环境
    【转】Windows环境下Android NDK环境搭建
    【转】蓝牙4.0——Android BLE开发官方文档翻译
    【转】java提高篇(十)-----详解匿名内部类
    【转】Android自定义View的实现方法,带你一步步深入了解View(四)
    【转】java枚举类型enum的使用
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13199459.html
Copyright © 2020-2023  润新知