一位活动主持人在同一时间只能参与一个活动。并且活动主持人需要全程参与活动,换句话说,一个主持人参与了第 i 个活动,那么该主持人在 (starti,endi) 这个时间段不能参与其他任何活动。求为了成功举办这 n 个活动,最少需要多少名主持人。
数据范围:
复杂度要求:时间复杂度
,空间复杂度
2,[[1,2],[2,3]]
1
只需要一个主持人就能成功举办这两个活动
2,[[1,3],[2,4]]
2
需要两个主持人才能成功举办这两个活动
在int范围内
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 计算成功举办活动需要多少名主持人 # @param n int整型 有n个活动 # @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间 # @return int整型 # import heapq class Solution: def minmumNumberOfHost(self , n , startEnd ): # write code here # 按照开始时间排序 startEnd = sorted(startEnd, key= lambda x:x[0]) q = [] # 保存每个主持人的结束时间 for time in startEnd: # 如果开始时间大于上个主持人的结束时间, 说明可以用同一个主持人,更新主持人结束时间 start_time = time[0] end_time = time[1] if q and start_time >= q[0]: heapq.heappop(q) heapq.heappush(q, end_time) return len(q)