[LeetCode] 252、會議室

aift發表於2020-01-05

題目描述

給定一個會議時間安排的陣列,每個會議時間都會包括開始和結束的時間[[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];
    }
    
};

相關文章