1. 题目
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();
}
}