Only tracking the minimum of end time seems work for me.
Any ideas of what I might miss?
meetings.sort(key = lambda x: x.start)
rooms = 1
min_end_time = meetings.end
for i in range(1, len(meetings)):
if meetings[i - 1].end > meetings[i].start: if min_end_time > meetings[i].start: rooms += 1 min_end_time = min(min_end_time, meetings[i].end)