merge_intervals

合并区间 python

class Interval(object):

    def __init__(self, s=0, e=0):
        self.start = s
        self.end = e


class Solution(object):

    def merge(self, intervals):
        """
        :param intervals: list[Interval]
        :return: List[interval]
        """

        if len(intervals) <= 1:
            return intervals
        res = []
        intervals = sorted(intervals, key=lambda x: x.start)
        l = intervals[0].start
        h = intervals[0].end

        for i in range(1, len(intervals)):
            if intervals[i].start <= h:
                h = max(h, intervals[i].end)
                print('i', i)
                print('l = ', l)
                print('h = ', h)
                a = 1
            else:
                print('准备加入 = ', l, h)
                res.append([l, h])  # 添加上一次的 [l, h]
                l = intervals[i].start
                h = intervals[i].end
                print('i', i)
                print('l = ', l)
                print('h = ', h)
                a = 1
        res.append([l, h])  # 最后一次的结果 [l, h] -->  需要加入
        return res



if __name__ == "__main__":

    s = Solution()
    i1 = Interval(1, 3)
    i2 = Interval(2, 6)
    i3 = Interval(8, 10)
    i4 = Interval(15, 18)

    res = s.merge([i1, i2, i3, i4])
    print('res = ', res)

结果:

i 1
l =  1
h =  6
准备加入 =  1 6
i 2
l =  8
h =  10
准备加入 =  8 10
i 3
l =  15
h =  18
res =  [[1, 6], [8, 10], [15, 18]]

猜你喜欢

转载自blog.csdn.net/sinat_15355869/article/details/88175361
今日推荐