Leetcode 253 Meeting Rooms II
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],…] (si < ei), find the minimum number of conference rooms required.
Input: [[0, 30],[5, 10],[15, 20]]
Output: 2
Input: [[7,10],[2,4]]
Output: 1
- Soruda bize bir interval listesi veriliyor.Bu listedeki intervaller toplantıların başlangıç ve bitiş zamanlarını temsil ediyor.Verilen listeye göre en az kaç toplantı odasına ihtiyacımız olduğunu bulmamız isteniyor.
- Toplantı odasını arttıran etmen aynı anda kaç tane toplantının yapıldığıdır. Bunu hesaplamak için ilk olarak toplandı başlangıç saatlerini bir listeye(start) toplantı bitiş saatlerini başka bir listeye(end) atar ve bu listeleri küçükten büyüğe sıralarız.
- start = [0,5,15] ve end = [10,20,30]
- Bundan sonra yapacağımız başlangıç ve bitiş saatlerini karşılaştırmak.
- 0 < 10 toplantı başlamış bu durumda bir sonraki başlangıca geç ve odayı arttır oda = 1
- 5 < 10 toplantı başlamış bu durumda bir sonraki başlangıca geç ve odayı arttır oda = 2
- 15 > 10 toplantı bitmiş bu durumda bir sonraki bitişe geç ve odayı azalt oda = 1
- Döngü biter oda sayısı bulunur.
"""
Definition of Interval.
class Interval(object):
def __init__(self, start, end):
self.start = start
self.end = end
"""
class Solution:
"""
@param intervals: an array of meeting time intervals
@return: the minimum number of conference rooms required
"""
def minMeetingRooms(self, intervals):
start = sorted([i.start for i in intervals])
end = sorted([i.end for i in intervals])
res, count = 0,0
s,e=0,0
while s < len(intervals):
if start[s]<end[e]:
s+=1
count += 1
else:
e +=1
count -= 1
res = max(res,count)
return res