给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。
你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。
请你返回你可以参加的 最大 会议数目。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.*;
class Solution {
public int maxEvents(int[][] events) {
Arrays.sort(events, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o1[0], o2[0]);
}
});
int ans = 0;
PriorityQueue<Integer> queue = new PriorityQueue<>();
int index = 0;
int day = 1;
while (index < events.length || !queue.isEmpty()) {
while (index < events.length && events[index][0] == day) {
queue.offer(events[index++][1]);
}
while (!queue.isEmpty() && queue.peek() < day) {
queue.poll();
}
if (!queue.isEmpty()) {
ans++;
queue.poll();
}
day++;
}
return ans;
}
}