牛客网每日一练

# class Interval:
#     def __init__(self, a=0, b=0):
#         self.start = a
#         self.end = b

#
# 
# @param intervals Interval类一维数组 
# @return Interval类一维数组
#
class Solution:
    def merge(self , intervals ):
        intervals = sorted(intervals,key=lambda x:x.start)
        res = [] #存储最后的结果
        i, n = 0, len(intervals)
        while i <= n - 1:
            l = intervals[i].start
            r = intervals[i].end
            while i < n-1 and r >= intervals[i+1].start:
                i = i + 1
                r = max(r, intervals[i].end)
            res.append(Interval(l, r))
            i = i+1
        return res
        # write code here
给出一组区间,请合并所有重叠的区间。
请保证合并后的区间按区间起点升序排列

解题思路:

  对左边界排序,如果下一个区间的左边界在前一个的有边界内,考虑是否要更新边界,如果如果下一个区间的左边界在前一个的有边界外,说明区间无法合并,开始计算下一个区间

原文地址:https://www.cnblogs.com/nenu/p/14677410.html