合并区间

对下面的区间进行合并,

实例如下:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]

输出:[[1,6],[8,10],[15,18]]

解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

解决问题的思路:

(1)先将区间进行排序(按左区间的大小)

(2)遍历整个list,如上面所示:如果3>2,就更新3为6,然后依次遍历,如果不满足上述的条件,就把该区间增加到result中。

 下面是实现的代码:

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda p:p[0])

        ans_list=[]

        for in_i in intervals:
            # 如果ans_list最后一个的右区间大于 in_i的左边的数
            if ans_list and ans_list[-1][-1]>=in_i[0]:
                # 更新ans_list最后一个右区间的数,是该值与in_i[1]进行对比后的最大值
                ans_list[-1][-1]=max(ans_list[-1][-1],in_i[1])
            else:
                ans_list.append(in_i)
        return ans_list

 

posted @ 2024-09-25 09:23  TW-NLP  阅读(5)  评论(0编辑  收藏  举报