1. 题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/0a886a68a66749eb9b18330e98cc7f9f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zi_6LSi57un57ut5Yqq5Yqb,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2. 思路
(1) 优先队列
- 先对活动时间按照开始时间从小到大排序,若开始时间相同,则按照结束时间从小到大排序。
- 优先队列中存放的是之前活动的结束时间,若当前活动的开始时间大于等于最近一个活动的结束时间,则弹出该活动的结束时间,即让该活动的主持人继续主持当前活动。
3. 代码
import java.util.Arrays;
import java.util.PriorityQueue;
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int minmumNumberOfHost(int n, int[][] startEnd) {
Arrays.sort(startEnd, (o1, o2) -> Integer.compare(o1[0], o2[0]));
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
if (!pq.isEmpty() && startEnd[i][0] >= pq.peek()) {
pq.poll();
}
pq.offer(startEnd[i][1]);
}
return pq.size();
}
}