Write an algorithm to determine the minimum number of meeting rooms needed given an array of meeting start and end times.
Implement min_meeting_rooms(intervals), where intervals is a list of [start, end] integer pairs. Return the minimum number of rooms required. Meetings sharing an endpoint do not overlap, so a meeting ending at time t frees its room for one starting at t.
def min_meeting_rooms(intervals):