本文最后更新于:2023年12月5日 下午

队列在算法中有很多巧妙应用,本文记录 LeetCode 队列相关题目。

给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi

你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。

请你返回你可以参加的 最大 会议数目。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution:
def maxEvents(self, events: List[List[int]]) -> int:
events.sort(reverse=True)
pq = []
p = 0
counter = 0
while True:
if not pq:
if not events:
break
else:
p = events[-1][0]
# 添加事件
while events and events[-1][0] == p:
heapq.heappush(pq, events.pop()[1])

# 开会
while pq:
finish_date = heapq.heappop(pq)
if p <= finish_date:
counter += 1
break
p += 1

return counter



文章链接:
https://www.zywvvd.com/notes/study/algorithm/queue/message-queue/queue /


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

队列算法练习
https://www.zywvvd.com/notes/study/algorithm/queue/message-queue/queue /
作者
Yiwei Zhang
发布于
2023年3月9日
许可协议