解法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,
};

京公网安备 11010502036488号