我有以下列格式的数组:在PHP数组中合并重叠范围?
array(
0 => array(1, 5),
1 => array(4, 8),
2 => array(19, 24),
3 => array(6, 9),
4 => array(11, 17),
);
其中每个项目是一个X-到-Y范围。我想合并阵列中的重叠范围,以获得更类似的内容:
array(
0 => array(1, 9), // 1-5, 4-8 and 6-9 are overlapping, so they are merged
1 => array(11, 17),
2 => array(19, 24),
);
要达到此目的的最佳方法是什么?
+1这是最清洁和最有效的是O(N)。这正是我想到的算法,你击败了我。 – Keyo 2010-09-09 01:40:46
@ $ data [$ n] [1]为+1服务的是什么?当使用浮点数时,这在我的情况下不起作用。 – 2012-08-27 20:36:06
@Tom,用整数,你希望'[1,2],[3,4]'是'[1,4]'的一个单独范围。在这种情况下,它会读取'if(3> 2 + 1)'然后开始一个新的范围。使用浮点数字,它并不是很有用。取决于您认为小到相同的数字,+1可以被删除或设置为非常小的增量(+ .00001)。 – Matthew 2012-08-30 02:56:35