Given an array of meeting time intervals intervals where intervals[i] = [starti, endi], return the minimum number of conference rooms required.
Example 1:
Input: intervals = [[0,30],[5,10],[15,20]]
Output: 2
Example 2:
Input: intervals = [[7,10],[2,4]]
Output: 1
1 <= intervals.length <= 104
0 <= starti < endi <= 106
[전략]
1. 2차원 input array의 시작시간과 끝나는 시간을 각각 배열에 저장한다.
2. 각 배열을 오름차순으로 sort
3. 배열을 순회하면서 i번째 미팅이 시작할때
import java.util.*;
class Solution {
public int minMeetingRooms(int[][] intervals) {
int numOfIntervals = intervals.length;
int[] startPoints = new int[numOfIntervals];
int[] endPoints = new int[numOfIntervals];
for (int i = 0; i < numOfIntervals; i++) {
startPoints[i] = intervals[i][0];
endPoints[i] = intervals[i][1];
}
Arrays.sort(startPoints);
Arrays.sort(endPoints);
int numOfRooms = 0;
int endPointIdx = 0;
for (int i = 0; i < numOfIntervals; i++) {
if (startPoints[i] < endPoints[endPointIdx]) {
numOfRooms++;
} else {
endPointIdx++;
}
}
return numOfRooms;
}
}