题目分析:
这一题是给定一些区间让我们加入一个区间后合并有共同区域的区间,例如给定intervals = [[1,3],[6,9]], newInterval = [2,5]
输出[[1,5],[6,9]]
,这一题我们可以直接将新元素插入到列表,然后按照【LeetCode】56. Merge Intervals 思路(代码)就可以完成。
测试代码(提交代码在下面):
def print_i_list(i_list):
for i in i_list:
print([i.start, i.end], end=' ')
print()
class Interval:
def __init__(self, s=0, e=0):
self.start = s
self.end = e
class Solution:
def insert(self, intervals, newInterval):
intervals.append(newInterval)
intervals.sort(key = lambda x: x.start)
i, res, length = 1, [], len(intervals)
s, e = intervals[0].start, intervals[0].end
while(i < length):
if e >= intervals[i].start:
s = min(s, intervals[i].start)
e = max(e, intervals[i].end)
else:
res.append(Interval(s, e))
s = intervals[i].start
e = intervals[i].end
i += 1
res.append(Interval(s, e))
return res
i1_1 = Interval(1, 3)
i1_2 = Interval(6, 9)
i1_3 = Interval(2, 5)
i_list1 = [i1_1, i1_2]
print_i_list(i_list1)
print_i_list(Solution().insert(i_list1, i1_3))
提交代码:
class Solution:
def insert(self, intervals, newInterval):
intervals.append(newInterval)
intervals.sort(key = lambda x: x.start)
i, res, length = 1, [], len(intervals)
s, e = intervals[0].start, intervals[0].end
while(i < length):
if e >= intervals[i].start:
s = min(s, intervals[i].start)
e = max(e, intervals[i].end)
else:
res.append(Interval(s, e))
s = intervals[i].start
e = intervals[i].end
i += 1
res.append(Interval(s, e))
return res