Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Merge Intervals by Sim0000
def merge_intervals(intervals):
if not intervals: return []
result = [intervals[0]]
for s, e in intervals:
if result[-1][1] + 1 < s: # s0--e0 s1--e1 : update last interval
result.append((s, e))
elif result[-1][1] < e: # s0--s1--e0--e1 -> s0--e1 : expand last interval
result[-1] = (result[-1][0], e)
return result
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert merge_intervals([(1, 4), (2, 6), (8, 10), (12, 19)]) == [(1, 6), (8, 10), (12, 19)], "First"
assert merge_intervals([(1, 12), (2, 3), (4, 7)]) == [(1, 12)], "Second"
assert merge_intervals([(1, 5), (6, 10), (10, 15), (17, 20)]) == [(1, 15), (17, 20)], "Third"
print('Done! Go ahead and Check IT')
July 26, 2017