一.题目解析
题目还是很好理解的。目前只有一个主持人,但是有多个活动需要主持,如果这些活动时间互不牵扯,则主持人可以主持所有活动,返回true;反之活动时间交叉,则主持人无法主持所有活动,返回false
二.算法原理
第一次想到的就是,只要第二个活动的开始时间,大于等于前一场活动的结束时间就行了。
但是有的示例中,活动是随机的,并没有按照时间的递增关系排列:
所以应该先将活动进行排序,将开始时间早的活动放到前面,这样再采用之前的比较就万无一失了。
class Solution { public: bool hostschedule(vector<vector<int> >& schedule) { sort(schedule.begin(),schedule.end()); int i = 0; for (i = 1; i < schedule.size(); ++i) { if(schedule[i][0] < schedule[i-1][1]) return false; } return true; } };