题目描述
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间[[s1,e1],[s2,e2],...]
(si < ei),请你判断一个人是否能够参加这里面的全部会议。
输入: [[0,30],[5,10],[15,20]]
输出: false
解题思路
对所有会议,按照【开始时间】升序排序。如果所有相邻的区间不冲突,那么总体则不冲突。思路是按照开始时间对会议进行排序。接着依次遍历会议,检查它是否在下个会议开始前结束。
参考代码
class Solution {
public:
bool canAttendMeetings(vector<vector<int> >& intervals) {
int length = intervals.size();
sort(intervals.begin(), intervals.end(), cmp);
for(int i = 0; i < length - 1; i++){
if(intervals[i][1] > intervals[i+1][0])
return false;
}
return true;
}
static bool cmp(vector<int> a, vector<int> b){
if(a[0] != b[0])
return a[0] < b[0];
else
return a[1] < b[1];
}
};