map
class Solution {
public:
int minMeetingRooms(vector<Interval>& intervals) {
map<int, int> m;
for (auto a : intervals) {
++m[a.start];
--m[a.end];
}
int rooms = 0, res = 0;
for (auto it : m) {
res = max(res, rooms += it.second);
}
return res;
}
};
two arrays
class Solution(object):
def minMeetingRooms(self, intervals):
"""
:type intervals: List[List[int]]
:rtype: int
"""
start = [x[0] for x in intervals ]
end = [x[1] for x in intervals]
start, end = sorted(start), sorted(end)
room, endPtr = 0, 0
for i in range(len(intervals)):
if start[i]<end[endPtr]:
room+=1
else: endPtr+=1
return room
min heap
class Solution(object):
def minMeetingRooms(self, intervals):
"""
:type intervals: List[List[int]]
:rtype: int
"""
intervals.sort(key=lambda x: (x[0], x[1]))
print(intervals)
ans = []
for i in intervals:
if ans and ans[0]<=i[0]:
heapq.heappop(ans)
heapq.heappush(ans, i[1])
return len(ans)