我有一个数组,每个条目包含一堆集的最小值和最大值,如下所示:
Array
(
[0] => Array
(
[0] => 1200
[1] => 2400
)
[1] => Array
(
[0] => 1400
[1] => 3800
)
[2] => Array
(
[0] => 2700
[1] => 4200
)
[3] => Array
(
[0] => 5900
[1] => 6400
)
)
对于每个索引,0索引是最小值,1索引是该特定集的最大值。我需要创建一个javascript或php函数来合并这个数组,以便重叠的集合变成一个。因此,上面的数组将变成以下内容:
Array
(
[0] => Array
(
[0] => 1200
[1] => 4200
)
[1] => Array
(
[0] => 5900
[1] => 6400
)
)
如您所见,从第一个数组中,0,1和2被合并到第二个数组的索引0中。来自第一个数组的索引3与任何其他集合都没有重叠,因此在第二个数组中变为索引1。
原始数组本身将包含大约70到80个集合,并且最小值和最大值可以高达9999999999,因此以n + 1,n + 2方式迭代数字行是不可行的。
有什么想法吗?
更新+解决方案
如下面的评论中所述,这确实是一个转贴(没有看到另一篇文章)。解决方案的链接位于以下链接:
答案 0 :(得分:0)
假设集合按下限排序,如示例所示,这样的事情怎么样?
var newIndex = 0;
var newSetArray[newIndex][0] = setArray[0][0];
for (i = 1; i < setArray.length; i++) {
if (setArray[i-1][1] < setArray[i][0]) {
newSetArray[newIndex][1] = setArray[i-1][1];
newSetArray[++newIndex][0] = setArray[i][0];
}
}
newSetArray[newIndex][1] = setArray[setArray.length-1][1];
语法可能需要一些调整,但我认为这应该有用。