【发布时间】:2019-06-04 14:45:20
【问题描述】:
给定两个区间 A = [1, 10] 和 B = [3, 7]。返回所有不重叠的区间,因此结果将是 [1, 2] 和 [8, 10]
假设 A 和 B 之间总是有重叠。
我尝试将问题拆分为多个案例: 假设您想找到 A 和 B 之间不重叠的区间。
Case 1:
A = [0, 5] and B = [2, 3].
The result would be [0, 1] and [4, 5].
General case:
if A[0] < B[0] and B[1] < A[1]
then [A[0], B[0] - 1] and [B[1] + 1, A[1]]
Case 2:
A = [0, 5] and B = [0, 5].
The result would be [].
General case:
if A[0] == B[0] and B[1] == A[1]
then []
.
.
.
我继续制作其他 4 个案例。但这似乎有点太乏味了。有没有更简单的实现方式?
谢谢
【问题讨论】:
-
该列表不应该也包含区间
[6, 6],即[2, 8]的非重叠部分吗?或者如果它不是零长度,会包含这个吗? -
我更新了问题。
-
会不会有独立区间这样的情况。例如: A = [1, 10] 和 B= [15, 20] ?否则,B 是否总是 A 的子集?
-
如果您在浏览器中搜索“区间代数”,您会找到比我们在此处管理的更能解释这一点的参考资料。
-
@BishalG 我假设总会有重叠。