Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Merge Intervals by tom-tom
from functools import reduce
def merge_intervals(intervals):
"""
Merge overlapped intervals.
"""
def combine(value, element):
if value:
last_begin, last_end = value[-1]
if element[0] <= last_end + 1:
value[-1] = (last_begin, max(last_end, element[1]))
else:
value.append(element)
else:
value = [element]
return value
return reduce(combine, intervals, [])
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')
Aug. 1, 2017
Comments: