【优先级队列】主持人调度(二)

求解代码

java 复制代码
public int minmumNumberOfHost (int n, int[][] startEnd) {
        Arrays.sort(startEnd,(a,b)->{
            if(a[0]==b[0]){
                return Integer.compare(a[1], b[1]);
            }
            return Integer.compare(a[0], b[0]);
        });

        PriorityQueue<Integer> queue = new PriorityQueue<>();
        int maxHost = 0;
        for(int[] activity:startEnd){
            while(!queue.isEmpty()&&queue.peek()<=activity[0]){
                queue.poll();
            }

            queue.offer(activity[1]);
            maxHost = Math.max(maxHost,queue.size());
        }
        return maxHost;
    }

踩坑记录

❌1.排序比较器整数溢出

java 复制代码
Arrays.sort(startEnd, (a, b) ->
    (a[0] == b[0] ? b[1] - a[1] : a[0] - b[0])
);

❌2.返回值不能返回最后的堆大小

java 复制代码
return queue.size(); // 

因为题目要的是整个过程中,堆出现过的最大大小。

❌3.释放主持人只用 if可能不够

java 复制代码
if (queue.peek() <= activity[0]) {
    queue.poll();
}

因为实际情况下可能有多个活动已经结束。

相关推荐
ん贤4 小时前
加密算法(对称、非对称、哈希、签名...)
算法·哈希算法
superior tigre5 小时前
78 子集
算法·leetcode·深度优先·回溯
天威?*5 小时前
bitset的数据结构用法
算法·动态规划
hoiii1875 小时前
粒子滤波跟踪系统 - 蒙特卡洛方法实现
算法
weisian1516 小时前
Java并发编程--47-分布式ID生成器:雪花算法(Snowflake)与时钟回拨问题
java·算法·时钟回拨·雪花算法id
itzixiao6 小时前
L1-066 猫是液体(5分)[java][python]
java·开发语言·python·算法
ytttr8736 小时前
MATLAB SIFT图像配准实现
算法·机器学习·matlab
小饕6 小时前
从 Word2Vec 到多模态:词嵌入技术的演进全景
人工智能·算法·机器学习
海参崴-6 小时前
AVL树完整实现与深度解析
算法
一个爱编程的人6 小时前
一个数是不是素数
数据结构·算法