1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 计算成功举办活动需要多少名主持人
# @param n int整型 有n个活动
# @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
# @return int整型
#将活动开始时间写入一个列表starts,进行排序。
# 将活动结束时间写入一个列表ends,进行排序。
# 每次活动开始时,需要增加一个主持人上场,每次活动结束时候可以释放一个主持人。
# 所以按照时间先后顺序对starts进行遍历,每次有活动开始count++,每次有活动结束count--
# 在count最大的时候,即是需要主持人最多的时候
class Solution:
def minmumNumberOfHost(self , n , startEnd ):
starts=[]
ends=[]
for start,end in startEnd:
starts.append(start)
ends.append(end)

starts.sort()
ends.sort()

i,j,count,res=0,0,0,0 # count:正在工作的主持人数,res:最大主持人数
for time in starts:
while(i<n and starts[i]<=time): # 计算开始的主持人数
i+=1
count+=1
while(j<n and ends[j]<=time): # 计算结束开始的主持人数
j+=1
count-=1
res=max(count,res)
return res