合并区间
1.思路
相对简单,只要把所有情况考虑清楚,都列举全即可。对于len(intervals)>=2的情况,用双指针解决。由于列表内元素可能是乱序,所以在处理前需要先按列表内的元素按第一位排序一下。
2.解题方法
见代码
3.Code
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
start=0
end=1
intervals.sort(key=lambda x: x[0])
if len(intervals)==1:
return intervals
elif len(intervals)==2:
if intervals[0][end]>=intervals[1][start]:
if intervals[0][start]>=intervals[1][start]:
intervals=[intervals[1][start],intervals[1][end]]
elif intervals[0][end]>=intervals[1][end]:
intervals=intervals[0]
else:
intervals=[intervals[0][start],intervals[1][end]]
return [intervals]
else:
return intervals
else:
i=0
j=1
while i<len(intervals) and j<len(intervals):
if intervals[j][start] <= intervals[i][end]:
if intervals[i][end]>=intervals[j][end]:
intervals[j]=[intervals[i][start],intervals[i][end]]
else:
intervals[j] = [intervals[i][start],intervals[j][end]]
intervals.remove(intervals[i])
i=j-1
else:
i+=1
j+=1
return intervals