文章目录
1、题目描述
2、解题思路
3、解题代码
1、题目描述
2、解题思路
假设一开始一个会议室都没开放,且会议室开放后不会关闭,可以重复使用。
按照我们日常的逻辑,先对所有的会议安排按照开始时间升序排列。
安排第一个会议,此时一个会议室都没有,直接开放一间会议室使用;
安排第 i 个会议,查看当前有没有会议室是已开放且空闲的,没有则接着开放新的会议室;
查看是否有会议室已开放且空闲,是看当前正在使用会议室的会议中,最早结束的那场会议的结束时间,如果现在还没结束,说明其他会议更不可能结束,直接开放新的会议室。
若在以开放的会议室中,最早结束的那场会议以及结束,说明现在存在空闲会议室,直接加入即可。
先对所有的会议时间按开始时间从小到大排序。
接着定义一个小顶堆作为会议室,每个节点的值是会议的结束时间。
小顶堆在我的代码中是用优先队列。无论加入多少个队列,小顶堆的堆顶就是当前使用会议室中最早的结束时间,并且小顶堆的元素个数即会议室当前占用的间数。
最早开始的会议的结束时间 add 到小顶堆中。
接着对 [1, size-1] 个会议依次进行以下操作:
1、对比当前会议的开始时间和小顶堆的堆顶元素值