题解 | 主持人调度(一)
主持人调度(一)
https://www.nowcoder.com/practice/e160b104354649b69600803184094adb?tpId=0&difficulty=&judgeStatus=&tags=&title=%E4%B8%BB%E6%8C%81%E4%BA%BA&sourceUrl=&gioEnter=menu
一.题目解析
题目还是很好理解的。目前只有一个主持人,但是有多个活动需要主持,如果这些活动时间互不牵扯,则主持人可以主持所有活动,返回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; } };