【发布时间】:2015-05-27 03:19:35
【问题描述】:
我有一个范围数组,我希望能够找到所有重叠的范围:
例如:
var examples = [
// Group 1
{start: 9, end: 10.50}, // Range 1
{start: 10, end: 10.50}, // Range 5
// Group 2
{start: 11, end: 13}, // Range 2
{start: 13.5, end: 14.5}, // Range 3
{start: 11.5, end: 14} // Range 4
]
- 范围 2 与范围 4 重叠
- 范围 3 与范围 4 重叠
- 虽然 Range 2 与 Range 3 不重叠,因为它们都与 Range 4 重叠。它们将被放在同一个组中
- 范围 1 和范围 5 仅相互重叠,因此它们将在自己的组中
JSFiddle 在这里:
【问题讨论】:
-
范围是包含还是不包含?换句话说,如果我们有 {start:9, end:10} 和 {start:10,end:11},这是两个独立的组还是我们认为它们在单个值 10 处重叠?
-
@rici 独家。你给出的例子应该被认为是两组!
-
区别在于我提出的算法步骤5.1中的比较是
<还是<=。
标签: javascript algorithm