精華區beta Marginalman 關於我們 聯絡資訊
https://leetcode.com/problems/meeting-rooms-iii/description 2402. Meeting Rooms III 給你一個數字 n 和一個陣列meetings[],meetings[i] = [starti, endi],n表示你有 幾個房間,meetings[]表示多個會議的開始時間和結束時間,會議按照以下規則進行安排 1.會議會被安排在沒人使用且編號最小的房間 2.如果沒有房間可用,會議會被延遲,消耗的時間和原本的時間相同。 3.當延遲的會議有房間可用時,較早開始的會議有較高的優先權。 找出哪個房間被用最多次,如果有多個房間使用次數相同返回編號最小的。 思路: 1.模擬排程,先依照會議開始時間排序會議。 2.如果n個房間裡面有沒安排會議的就直接安排當前會議,結束時間為meeting[1] 3.否則找出最快會結束的會議把這個延遲的會議安排給他,結束時間加上meetings[i] 的duration。 4.最後找出哪個會議室被用最多,返回編號小的。 pycode: -------------------------------------------- class Solution: def mostBooked(self, n: int, meetings: List[List[int]]) -> int: times = [0] * n room = [0] * n meetings.sort() for meeting in meetings: finished = False index = 0 for i in range(n): if room[i] <= meeting[0]: times[i] += 1 room[i] = meeting[1] finished = True break if room[i] < room[index]: index = i if finished: continue times[index] += 1 room[index] += meeting[1] - meeting[0] maxTimes = max(times) return times.index(maxTimes) -------------------------------------------- -- https://i.imgur.com/hqrJ7kl.jpg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.73.13 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1708234610.A.ABF.html
JIWP: 大師 02/18 13:37