253. 会议室 II
给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/meeting-rooms-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
涂色
import java.util.Map;
class Solution {
public int minMeetingRooms(int[][] intervals) {
int[] cnt = new int[1000001];
for (int[] interval : intervals) {
cnt[interval[0]]++;
cnt[interval[1]]--;
}
int sum = 0;
int ret = 0;
for (int i = 0; i <= cnt.length; ++i) {
sum += cnt[i];
ret = Math.max(ret, sum);
}
return ret;
}
}
优先队列
import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.PriorityQueue;
class Solution {
public int minMeetingRooms(int[][] intervals) {
if (intervals == null || intervals.length == 0 || intervals[0].length == 0) {
return 0;
}
PriorityQueue<Integer> queue = new PriorityQueue<Integer>(intervals.length);
Arrays.sort(intervals,
new Comparator<int[]>() {
public int compare(final int[] a, final int[] b) {
return a[0] - b[0];
}
});
int ret = 0;
for (int i = 0; i < intervals.length; i++) {
while (!queue.isEmpty() && intervals[i][0] >= queue.peek()) {
queue.poll();
}
queue.offer(intervals[i][1]);
ret = Math.max(ret, queue.size());
}
return ret;
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号