# 20191127
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), find the minimum number of conference rooms required.
Example 1:
0 --------------------- 30
5----10
15---20
Input: [[0, 30],[5, 10],[15, 20]]
Output: 2
"Sort"
x
start = [0, 5, 15]
end = [10, 20, 30]
x
int room = 2;
0 ---------------------------- 15
2----------------7
3--4
5----------8
Input: [[0, 15], [5, 8], [2, 7], [3, 4]]
x
start = [0, 2, 3, 5]
end = [4, 7, 8, 15]
x
room++;
room++;
room++;
return 3;
Example 2:
Input: [[7,10],[2,4]]
Output: 1
```
public int minMeetingRooms(int[][] intervals) {
if (intervals == null || intervals.length == 0) return 0;
if (intervals.length == 1) return 1;
int n = intervals.length;
int[] start = new int[n];
int[] end = new int[n];
for (int i = 0; i < n; i++) {
start[i] = intervals[i][0];
end[i] = intervals[i][1];
}
Arrays.sort(start);
Arrays.sort(end);
int room = 0;
int endPointer = 0;
for (int i = 0; i < n; i++) {
if (start[i] < end[endPointer]) {
room++;
} else {
endPointer++;
}
}
return room;
}
```
```
0 --------------------- 30
5----10
15---20
```
Input: [[5, 10],[15, 20],[0, 30]]
public int minMeetingRooms(int[][] intervals) {
if (intervals == null) return 0;
if (intervals.length == 1) return 1;
Arrays.sort(intervals, (a1, b1) -> Integer.compare(a1[1], b1[1]));
int room = 0;
int[] newInterval = intervals[0];
for (int[] interval: intervals) {
if (interval[1] >= newInterval[0]) {
room++;
newInterval = interval;
}
}
return room;
}
```
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.
0 --------------------- 30
5----10
15---20
Example 1:
Input: [[0,30],[5,10],[15,20]]
Output: false
2 --- 4
7 --- 10
Example 2:
Input: [[7,10],[2,4]]
Output: true
x
[0, 5, 15]
[10, 20, 30]
x
```
```
public boolean canAttendMeetings(int[][] intervals) {
if (intervals == null) return false;
if (intervals.length == 1) return true;
int[] start = new int[intervals.length];
int[] end = new int[intervals.length];
for (int i = 0; i < intervals.length; i++){
start[i] = intervals[i][0];
end[i] = intervals[i][1];
}
Arrays.sort(start);
Arrays.sort(end);
// for (int i = 0; i < start.length - 1; i++) {
// if (start[i + 1] < end[i]) {
// return false;
// }
// }
for (int i = 1, j = 0; i < intervals.length; i++) {
if (start[i] < end[j]) {
return false;
} else {
j++;
}
}
return true;
}
```