解法3: 按时刻统计活动数量由题可知,活动数量只会在活动开始或者活动结束的时候变化。所以我们只需要记录这些时刻活动数量的变化值,就可以通过累加得到活动数量的变化,进而求得活动数量的最大值。时间复杂度:,空间复杂度

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 计算成功举办活动需要多少名主持人
 * @param n int整型 有n个活动
 * @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
 * @return int整型
 */
function minmumNumberOfHost(n, startEnd) {
    // write code here
    // 记录时间点
    // 开始需要一个主持人 结束可以释放一个主持人
    let counter = {};
    for (let i = 0; i < n; i++) {
        let start = startEnd[i][0];
        let end = startEnd[i][1];
        counter[start] = (counter[start] || 0) + 1; // 需要一个主持人
        counter[end] = (counter[end] || 0) - 1; // 释放一个注册人
    }
    let sortedTimes = Object.keys(counter).sort((a, b) => a - b);
    let count = 0;
    let sum = 0;
    for (let time of sortedTimes) {
        sum += counter[time];
        count = Math.max(sum,count)
    }
    return count
}
module.exports = {
    minmumNumberOfHost: minmumNumberOfHost,
};