题解 | #主持人调度#

主持人调度

http://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299

利用优先级队列,对 end 进行排序与当前的 start 对比,代码如下:

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 计算成功举办活动需要多少名主持人
# @param n int整型 有n个活动
# @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
# @return int整型
#
import heapq

class PriorityQueue:
    def __init__(self):
        self.data = []
    
    def push(self, d):
        heapq.heappush(self.data, d)
        
    def pop(self):
        heapq.heappop(self.data)
    
    def peek(self):
        return self.data[0]
    
    def empty(self):
        return not self.data
    
    def size(self):
        return len(self.data)

class Solution:
    def minmumNumberOfHost(self , n , startEnd ):
        # write code here
        startEnd.sort()
        pq = PriorityQueue()
        for i in range(n):
            if not pq.empty() and pq.peek() <= startEnd[i][0]:
                pq.pop()
            pq.push(startEnd[i][1])
        return pq.size()
                
全部评论

相关推荐

03-10 11:23
门头沟学院 Java
鹿LF:计算机面试就跟数学题一样,没什么实际价值,但只能这么筛选,本质是考察你的努力,智力和学习能力
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务