Question

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

NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

Thinking:

  • Method 1:
public class MeetingRooms {
	public static boolean canAttend(int[][] intervals){
		if(intervals == null || intervals.length == 0) return true;
		for(int i = 1; i < intervals.length; i++){
			if(intervals[i][0] < intervals[i - 1][1])
				return false;
		}
		return true;
	}	
}

Second Time

  • Method 1: Sort
      class Solution {
          public boolean canAttendMeetings(int[][] intervals) {
              int len = intervals.length;
              int[] startTime = new int[len];
              int[] endTime = new int[len];
              int count = 0;
              for(int[] interval: intervals){
                  startTime[count] = interval[0];
                  endTime[count++] = interval[1];
              }
              Arrays.sort(startTime);
              Arrays.sort(endTime);
              for(int i = 1; i < len; i++){
                  if(startTime[i] < endTime[i - 1]) return false;
              }
              return true;
          }
      }