#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; } };