Problem

# 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].

AC

class Interval():
    def __init__(self, s=0, e=0):
        self.start = s
        self.end = e

class Solution():
    def merge(self, xs):
        xs.sort(key=lambda x:x.start)
        cur = 1
        for _ in range(1, len(xs)):    # len(xs) 每次会自动减一
            if xs[cur].start <= xs[cur-1].end:
                xs[cur-1].end = max(xs[cur-1].end, xs[cur].end)
                del xs[cur]
            else:
                cur += 1
        return xs


if __name__ == "__main__":
    print(Solution().merge([Interval(1, 3), Interval(2, 6), Interval(8, 10), Interval(15,18)]))

更多推荐