zoukankan      html  css  js  c++  java
  • LeetCode 合并区间

    LeetCode  合并区间

    给出一个区间的集合,请合并所有重叠的区间。

    示例 1:

    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    

    示例 2:

    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

    首先,将各个区间按照开始时间升序排列,这样的话,如果相邻区间出现重叠,则一定是  前一个区间的结束时间end >= 后一个区间的开始时间start 。

    所以,我们首先将interval按照开始时间start进行排序。

    接下来,遍历interval,如果是第一个区间直接append入结果res列表;

               如果,区间不与res中最后一个区间重叠,则append如res列表;

                否则,从res中取出最后一个区间,与当前区间合并后,再append如res列表。

     1 # Definition for an interval.
     2 # class Interval:
     3 #     def __init__(self, s=0, e=0):
     4 #         self.start = s
     5 #         self.end = e
     6 
     7 class Solution:
     8     def merge(self, intervals):
     9         """
    10         :type intervals: List[Interval]
    11         :rtype: List[Interval]
    12         """
    13         lenint = len(intervals)
    14         if lenint <= 1:
    15             return intervals
    16         #按照第一个元素进行排序
    17         intervals = sorted(intervals, key=lambda inter: inter.start)
    18         #遍历第二个元素,如果第二个元素的值比下一个列表的第一个元素的值大,则合并列表
    19         res = []
    20         for temp in intervals:
    21             if len(res) == 0:
    22                 res.append(temp)
    23             #如果不冲突,直接加入
    24             if temp.start > res[len(res)-1].end :
    25                 res.append(temp)
    26             #如果冲突,进行合并
    27             else:
    28                 temp2 = res.pop(len(res)-1)
    29                 res.append(Interval(temp2.start, max(temp.end, temp2.end)))
    30         for temp in res:
    31             print(temp.start,temp.end)
    32         return res
  • 相关阅读:
    结对作业(1)--疫情统计可视化(原型设计)
    软工实践寒假作业(2/2)疫情统计程序
    最长回文
    吉哥系列故事——完美队形II ——Manacher算法
    友情链接
    代码互改——第二次个人编程作业
    汉字编程——第一次个人编程作业
    谈谈自己
    OO第一次博客
    OO第一单元作业总结
  • 原文地址:https://www.cnblogs.com/yxh-amysear/p/9294815.html
Copyright © 2011-2022 走看看