[LeetCode] 252、会议室

题目描述

给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间[[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];
    }
    
};

你可能感兴趣的:(算法(UVa,+,LeetCode,+,OJ,+,……))