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

545. 前K大数 II

时间:2020-06-27 19:58:24      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:结构   you   bsp   并且   sel   nbsp   lis   tle   排序   

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)

 

545. 前K大数 II

标签:结构   you   bsp   并且   sel   nbsp   lis   tle   排序   

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13199459.html

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