Sort the intervals according to their start time, then count how many meetings are still going when a new meeting starts.

```
from heapq import *
class Solution(object):
def minMeetingRooms(self, intervals):
"""
:type intervals: List[Interval]
:rtype: int
"""
intervals.sort(key=lambda i:i.start)
pq=[]
res=0
for i in intervals:
"""
pop meetings already end
"""
while pq and pq[0]<=i.start:
heappop(pq)
heappush(pq,i.end)
res=max(res,len(pq))
return res
```