题解 | 合并区间

合并区间

https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a

class Solution:
    def merge(self , intervals: List[Interval]) -> List[Interval]:
        # write code here
        res=[]
        intervals.sort(key=lambda x:x.start)
        for i in range(len(intervals)):
            if not res or intervals[i].start>res[-1].end:
                res.append(intervals[i])
            else:
                res[-1].end=max(intervals[i].end,res[-1].end)
        return res

思路:

  1. 将列表按开始位置排序
  2. 新建结果列表。
  3. 遍历原列表中的区间。如果区间的开头小于等于结果列表最新区间的结尾,说明两者是包含关系,需要合并。合并就是取两个区间的结尾最大值作为新结尾。(画图更清晰)
  4. 否则说明当前列表不需要合并,直接添加到结果列表中。

全部评论

相关推荐

01-11 08:47
门头沟学院 Java
程序员花海_:所以看起来还是实习的好处多 给导师打黑工能学到什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务