LeetCode&Python 156.合并区间

描述

给出若干闭合区间,合并所有重叠的部分。

样例

Given intervals => merged intervals:

[                    [

  (1, 3),              (1, 6),

  (2, 6),      =>      (8, 10),

  (8, 10),              (15, 18)

  (15, 18)            ]

]

挑战

O(n log n) 的时间和 O(1) 的额外空间。


Python:

class Solution:

    def merge(self, intervals):

        newInter = []

        if len(intervals) <= 1:

            return intervals

        else:

            intervals.sort(key = lambda x:x.start)

            newInter.append(intervals[0])

            for i in range(1,len(intervals)):

                prev = newInter[-1]

                if intervals[i].start <= prev.end :

                    prev.end = max(prev.end,intervals[i].end)

                else: newInter.append(intervals[i])

        return newInter

整体的思路就是,先排序,然后将前一个区间的第二个数与后一个区间的第一个数比较。

你可能感兴趣的:(LeetCode&Python 156.合并区间)