扫描线,遇到start,和end记录其时间点,并以True和False配对,随后sort。再次扫描,设置count记录需要的会议室数量,遇到start的True后+1,end的False则相应-1.每次更新count后对于全局res。保留最大的temp作为res。
class Solution:
def minMeetingRooms(self, intervals: List[List[int]]) -> int:
if not intervals or len(intervals) == 0:return 0
arr = []
res = float('-inf')
for s, e in intervals:
arr.append((s, True))
arr.append((e, False))
arr.sort(key = lambda x:(x[0],x[1]))
temp = 0
for sore, torf in arr:
if torf == 1:
temp += 1
elif torf == 0:
temp -= 1
res = max(temp,res)
return res