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