利用优先级队列,对 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()