【力扣100】56.合并区间
添加链接描述
class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:# 队列,每次加进来两个元素:1.不包含:第一个元素出去,并放入result;2.包含:合并n=len(intervals)result=[]que=collections.deque()if n==0:return [[]]if n==1:return [intervals[0]]# 初始化intervals=sorted(intervals,key=lambda x:x[0])for i in intervals:if len(que)<2:que.append(i)if len(que)==2:start=max(que[0][0],que[1][0])end=min(que[0][1],que[1][1])left_border=min(que[0][0],que[1][0])right_border=max(que[0][1],que[1][1])if start<=end:que.append([left_border,right_border])que.popleft()que.popleft()else:result.append(que.popleft())while que:result.append(que.popleft())return result
思路:
- 不存在的条件
- 这道题目其实找的是所有区间里的交集,那么这些区间的在数组中的先后顺序其实就无所谓
- 先用每一个一位数组的第一个值排序,目的是找到最开始的起点
sorted(array,key=lambda x:x[0])
- 然后就是如何判断两个区间有交集?
interval1 = [3, 7]
interval2 = [5, 10]# 获取交集的起始点和结束点
start = max(interval1[0], interval2[0])
end = min(interval1[1], interval2[1])# 检查是否存在交集
if start <= end:intersection = [start, end]print("两个区间的交集为:", intersection)
else:print("这两个区间没有交集")
这道题写了好久,但是收获还是有的,哈哈