#include <algorithm>
class Solution {
public:
int minmumNumberOfHost(int n, vector<vector<int> >& startEnd) {
//需要检测每个时间所需要的主持人,也就是活动个数,
//如果只对开始时间进行排序,遍历开始时间时,需要记录已经开始的活动的结束时间,并且每轮需要检测有多少活动结束,并开启本轮活动;
vector<int> start, end;
for(int i=0; i<n; ++i){ //把开始时间和结束时间分别放在两个数组中,并排序;
start.push_back(startEnd[i][0]);
end.push_back(startEnd[i][1]);
}
sort(start.begin(), start.end());
sort(end.begin(), end.end());
int i=0, j=0, hosts = 0, maxhosts = 0; //i时开始时间点,j是结束时间点
while(i < n){
if(start[i] < end[j]){ //开始时间小于结束时间,表示没有活动结束,但有新的活动开始了,结束时间不一定是本开始时间对应的,但是也说明了这个活动开始了;
++hosts;
maxhosts = max(hosts, maxhosts);
++i;
}else{ //开始时间小于或者大于检测的结束时间,表示结束时间对应的活动结束了,
hosts--;
++j;
}
}
return maxhosts;
}
};