In [8]:
def condense_meeting_times(tuples):
    tuples.sort()
    condensed = [tuples[0]]
    
    for tup in tuples[1:]:
        if tup[0] <= condensed[-1][1]:
            condensed[-1] = (condensed[-1][0], max(tup[1], condensed[-1][1]))
        else:
            condensed.append(tup)
    
    return condensed

In [9]:
condense_meeting_times([(0, 1), (3, 5), (4, 8), (10, 12), (9, 10)])


Out[9]:
[(0, 1), (3, 8), (9, 12)]

In [10]:
condense_meeting_times([(1, 3), (2, 4)])


Out[10]:
[(1, 4)]

In [11]:
condense_meeting_times([(1, 2), (2, 3)])


Out[11]:
[(1, 3)]

In [12]:
condense_meeting_times([(1, 5), (2, 3)])


Out[12]:
[(1, 5)]