题解 | #主持人调度(二)#
主持人调度(二)
http://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299
边界计数法
import java.util.*;
public class Solution {
public int minmumNumberOfHost (int n, int[][] startEnd) {
// Arrays.sort(startEnd, (a, b) -> a[0]==b[0]?a[1]-b[1]:a[0]-b[0]);
int ans = 0;
TreeMap<Integer, Integer> tm = new TreeMap<>();
for(int[] a : startEnd){
tm.put(a[0], tm.getOrDefault(a[0], 0) + 1);
tm.put(a[1], tm.getOrDefault(a[1], 0) - 1);
}
int overlap = 0; //重叠数 也就是同时需要的主持人数
for(int a : tm.values()){
overlap += a;
ans = Math.max(ans, overlap); //贪心取最大的一次重叠数
}
return ans;
}
}