合并区间 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]]