252. Meeting Rooms

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.

Example 1:

Input: [[0,30],[5,10],[15,20]]
Output: false

Example 2:

Input: [[7,10],[2,4]]
Output: true

解题要点:

首先根据start time从小到大排序,然后再比较前一结束时间和后面开始时间,如果结束时间大于后面开始时间,直接返回False。

class Solution {
    public boolean canAttendMeetings(int[][] intervals) {
        Arrays.sort(intervals, new Comparator<int[]>() {
            public int compare(int[] a, int[] b) {
                return Integer.compare(a[0], b[0]);
            }
        });
       for(int i = 0; i < intervals.length - 1; i++){
           int next = i + 1;
           if(intervals[i][1] > intervals[next][0]) return false;
       }
        return true;
    }
}

Last updated

Was this helpful?