给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。
你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。
请你返回你可以参加的 最大 会议数目。
思路:按照结束时间进行排序,对于第 ii 天,如果有若干的会议都可以在这一天开,那么我们肯定是让 endDayendDay 小的会议先在这一天开才会使答案最优,因为 endDayendDay 大的会议可选择的空间是比 endDayendDay 小的多的,所以在满足条件的会议需要让 endDayendDay 小的先开。
超时了,改进的话用优先队列,我能力有限,不会搞。
class Solution:
def maxEvents(self, events: List[List[int]]) -> int:
res = 0
events=sorted(events,key=lambda x:x[1])#按最晚时间元素进行排列
visited=set()
for s,e in events:
for day in range(s, e+1):
if day not in visited:
visited.add(day)
break
return len(visited)