n<=100,代码可以写得简单(比赛时想复杂了)
2022年9月4日 12:21
由于 $n\le 100$,可以直接按照题目模拟:
-
按开始时间排序,依次安排 meetings
-
维护每个会议室的 最早可用时间 $t$。每次安排会议$[start, end)$时,将那些 $t$ 早于 $start$ 的会议室的 $t$ 设为 $start$。这样处理后只需从中选择 $t$ 最早的会议室即可(如果有相等的选下标最小的)。
-
同时维护 $cnt$ 数组,遍历完成后按要求返回答案即可
###python
class Solution:
def mostBooked(self, n: int, meetings: List[List[int]]) -> int:
cnt, t = [0] * n, [0] * n
for [s, e] in sorted(meetings):
t = list(map(lambda x : max(x, s), t))
choice = t.index(min(t))
t[choice], cnt[choice] = t[choice] + e - s, cnt[choice] + 1
return cnt.index(max(cnt))