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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容