【发布时间】:2021-11-17 00:15:09
【问题描述】:
我了解start[i](第一个列表)和end[i](第二个列表)正在创建一个新输出作为新列表,但是如何使用 for 循环或理解列表遍历两个列表?有人可以提供更高效的代码吗?
这是场景:
您将获得两个封闭区间列表,firstList 和 secondList,其中 firstList[i] = [starti, endi] 和 secondList[j] = [startj, endj]。每个区间列表都是成对不相交的,并按排序顺序排列。
返回这两个区间列表的交集。
闭区间[a, b](与a <= b)表示实数集x与a <= x <= b。
两个闭区间的交集是一组实数,它们要么为空,要么表示为闭区间。比如[1, 3]和[2, 4]的交集是[2, 3]。
示例 1:
输入:
firstList = [[0,2],[5,10],[13,23],[24,25]]
secondList = [[1,5],[8,12],[15,24],[25,26]]
输出:
[[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]
示例 2:
输入:
firstList = [[1,3],[5,9]]
secondList = []
输出:
[]
这是我所拥有的,但我想要更少的代码:
l = intervals[0][0]
r = intervals[0][1]
for i in range(1,N):
# If no intersection exists
if (intervals[i][0] > r or intervals[i][1] < l):
print(-1)
# Else update the intersection
else:
l = max(l, intervals[i][0])
r = min(r, intervals[i][1])
【问题讨论】:
-
请正确格式化您的代码并包含一些测试数据 - 您没有提供
intervals或N的示例,并且示例中提到了您未使用的firstList和secondList。代码缩进会导致语法错误。