leetcode253java_【LeetCode(Java) - 253】会议室 II

文章目录1、题目描述2、解题思路3、解题代码1、题目描述 2、解题思路假设一开始一个会议室都没开放,且会议室开放后不会关闭,可以重复使用。按照我们日常的逻辑,先对所有的会议安排按照开始时间升序排列。安排第一个会议,此时一个会议室都没有,直接开放一间会议室使用;安排第 i 个会议,查看当前有没有会议室是已开放且空闲的,没有则接着开放新的会议室;查看是否有会议室已开放且空闲,是看当前正在使用会议室的会...
摘要由CSDN通过智能技术生成

文章目录

1、题目描述

2、解题思路

3、解题代码

1、题目描述

706e56badb9797cc0cb4eec87435be51.png

2、解题思路

假设一开始一个会议室都没开放,且会议室开放后不会关闭,可以重复使用。

按照我们日常的逻辑,先对所有的会议安排按照开始时间升序排列。

安排第一个会议,此时一个会议室都没有,直接开放一间会议室使用;

安排第 i 个会议,查看当前有没有会议室是已开放且空闲的,没有则接着开放新的会议室;

查看是否有会议室已开放且空闲,是看当前正在使用会议室的会议中,最早结束的那场会议的结束时间,如果现在还没结束,说明其他会议更不可能结束,直接开放新的会议室。

若在以开放的会议室中,最早结束的那场会议以及结束,说明现在存在空闲会议室,直接加入即可。

先对所有的会议时间按开始时间从小到大排序。

接着定义一个小顶堆作为会议室,每个节点的值是会议的结束时间。

小顶堆在我的代码中是用优先队列。无论加入多少个队列,小顶堆的堆顶就是当前使用会议室中最早的结束时间,并且小顶堆的元素个数即会议室当前占用的间数。

最早开始的会议的结束时间 add 到小顶堆中。

接着对 [1, size-1] 个会议依次进行以下操作:

1、对比当前会议的开始时间和小顶堆的堆顶元素值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值