边界计数法

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;
        
        
    }
}