假设我们有一个封闭间隔列表和另一个间隔列表。每个列表分别是不重叠的,并且以不降序排列。我们必须找到以非降序排列的两个间隔的重叠。
因此,如果输入像inv1 = [[50,100],[190,270],[310,330]] inv2 = [[40,120],[180,190]],则输出将为[ [50,100],[190,190]]
为了解决这个问题,我们将遵循以下步骤-
ans:=一个新列表
i:= 0,j:= 0
当i <A的大小而j <B的大小时
j:= j + 1
我:=我+ 1
插入间隔[开始,结束]到ans
如果开始<=结束,则
如果A [i,1] <B [j,1],则
除此以外,
返回ans
让我们看下面的实现以更好地理解-
class Solution: def solve(self, A, B): ans = [] i = 0 j = 0 while i < len(A) and j < len(B): start = max(A[i][0], B[j][0]) end = min(A[i][1], B[j][1]) if start <= end: ans.append([start, end]) if A[i][1] < B[j][1]: i += 1 else: j += 1 return ans ob = Solution()inv1 = [[50, 100],[190, 270],[310, 330]] inv2 = [[40, 120],[180, 190]] print(ob.solve(inv1, inv2))
[[50, 100],[190, 270],[310, 330]], [[40, 120],[180, 190]]
输出结果
[[50, 100], [190, 190]]