Ich habe ein Array in dem folgenden Format:Verschachtelte Bereiche in PHP-Arrays zusammenführen?
array(
0 => array(1, 5),
1 => array(4, 8),
2 => array(19, 24),
3 => array(6, 9),
4 => array(11, 17),
);
dem jedes Element einen Bereich X zu Y ist. Was würde Ich mag die überlappende Bereiche in der Matrix verschmelzen, etwas mehr wie folgt zu erhalten:
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),
);
Was wäre der beste Weg, um dies zu erreichen
?
+1 Dies ist die sauberste und effizient ist O (n). Das ist genau der Algorithmus, den ich im Sinn hatte, du hast mich dazu geschlagen. – Keyo
Was bedeutet +1 für @ $ Daten [$ n] [1]? Bei der Verwendung von Fließkommazahlen funktioniert das in meinem Fall nicht. –
@Tom, mit ganzen Zahlen wollen Sie '[1,2], [3,4]' zu einem einzigen Bereich von '[1,4]'. In diesem Fall würde es 'if (3> 2 + 1)' lesen und dann einen neuen Bereich beginnen. Mit Gleitkommazahlen ist es nicht wirklich nützlich. Die +1 können gelöscht oder auf ein sehr kleines Delta (+.00001) gesetzt werden, je nachdem, was Sie für klein genug halten, um dieselbe Nummer zu erhalten. – Matthew