merge_intervals

来源:互联网 发布:阿里云搭建ss教程 编辑:程序博客网 时间:2024/06/03 21:39
#coding:utf-8'''Created on 2017-9-20"""Given a collection of intervals, merge all overlapping intervals.For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18]."""'''class Interval(object):    def __init__(self, s=0, e=0):        self.start = s        self.end = edef merge(intervals):    """    :type intervals: List[Interval]    :rtype: List[Interval]    """    out = []    for i in sorted(intervals, key=lambda i: i.start):#print sorted(L, key=lambda x:(x[1],x[0]))        print i.start        #print out[-1]        if out and i.start <= out[-1].end:            out[-1].end = max(out[-1].end, i.end)        else:            out += i,    return outdef print_intervals(intervals):    res = []    for i in intervals:        res.append('['+str(i.start)+','+str(i.end)+']')    print("".join(res))if __name__ == "__main__":    given = [[1,3],[2,6],[8,10],[15,18]]    intervals = []    for l, r in given:        intervals.append(Interval(l,r))    print_intervals(intervals)    print_intervals(merge(intervals))