In der PHP-Entwicklung ist Array eine der sehr wichtigen Datenstrukturen. Unter diesen ist das Finden der fortlaufenden Nummern eines Arrays eine sehr häufige Anforderung. In diesem Artikel werden verschiedene Möglichkeiten beschrieben, dies zu tun.
Die Loop-Traversal-Methode ist eine gängige Methode, um aufeinanderfolgende Zahlen in einem Array zu finden. Die Grundidee ist: Angenommen, das erste Element im Array ist der Startpunkt, durchlaufen Sie die Elemente von diesem Startpunkt aus rückwärts und berechnen Sie jedes Mal, ob die Differenz zwischen dem nächsten Element und dem aktuellen Element 1 ist. Wenn ja, bedeutet dies, dass das Array fortlaufende Zahlen enthält. Wenn nicht, setzen Sie den Startpunkt zurück und verfahren Sie weiter.
Der Beispielcode lautet wie folgt:
function findConsecutiveNumbers($arr){ $res = []; $n = count($arr); for($i=0;$i<$n;$i++){ $j=$i+1; $tmp=[]; $tmp[] = $arr[$i]; while($j<$n && $arr[$j]-$arr[$j-1]==1){ $tmp[] = $arr[$j]; $j++; } if(count($tmp)>1){ $res[] = $tmp; } } return $res; } $arr = [1, 2, 3, 5, 6, 7, 9]; $res = findConsecutiveNumbers($arr); print_r($res); //输出[[1,2,3],[5,6,7]]
Die Sortiermethode ist eine weitere gängige Methode, um aufeinanderfolgende Zahlen in einem Array zu finden. Die Grundidee besteht darin, zuerst das ursprüngliche Array zu sortieren, dann die Array-Elemente der Reihe nach zu durchlaufen und zu berechnen, ob die Differenz zwischen jedem Element und dem vorherigen Element 1 beträgt. Wenn ja, bedeutet dies, dass das Array fortlaufende Zahlen enthält. Wenn nicht, setzen Sie den Startpunkt zurück und verfahren Sie weiter.
Der Beispielcode lautet wie folgt:
function findConsecutiveNumbers($arr){ sort($arr); $res = []; $n = count($arr); $tmp = []; for($i=0;$i<$n;$i++){ if(!$i || $arr[$i]-$arr[$i-1]==1){ $tmp[] = $arr[$i]; }else{ if(count($tmp)>1){ $res[] = $tmp; } $tmp = [$arr[$i]]; } } if(count($tmp)>1){ $res[] = $tmp; } return $res; } $arr = [1, 2, 3, 5, 6, 7, 9]; $res = findConsecutiveNumbers($arr); print_r($res); //输出[[1,2,3],[5,6,7]]
Die rekursive Methode ist auch eine Methode, um die aufeinanderfolgenden Zahlen in einem Array zu finden. Sie durchläuft jedes Element rekursiv und ermittelt, ob der Unterschied zwischen jedem Element und dem vorherigen besteht Element ist 1. . Wenn die Differenz 1 beträgt, fahren Sie mit der Rekursion zum nächsten Element fort. Wenn die Differenz nicht 1 ist, bedeutet dies, dass die fortlaufende Zahl beendet ist und die vorherige Rekursionsebene zurückgegeben wird.
Der Beispielcode lautet wie folgt:
function findConsecutiveNumbers($arr) { $res = array(); $n = count($arr); $i = 1; $j = 0; while($i < $n) { if($arr[$i] - $arr[$i-1] == 1) { $i++; } else { $tmp = array_slice($arr, $j, $i-$j); if(count($tmp)>1){ $res[] = $tmp; } $j = $i; $i++; } } $tmp = array_slice($arr, $j, $i-$j); if(count($tmp)>1){ $res[] = $tmp; } return $res; } $arr = [1, 2, 3, 5, 6, 7, 9]; $res = findConsecutiveNumbers($arr); print_r($res); //输出[[1,2,3],[5,6,7]]
Zusammenfassung:
Mit den oben genannten drei Methoden können wir die fortlaufenden Nummern des Arrays leicht finden. Unter diesen beträgt die zeitliche Komplexität der Schleifendurchlaufmethode und der Sortiermethode $O(nlogn)$, und die zeitliche Komplexität der rekursiven Methode beträgt $O(n)$. Daher können wir bei großen Datenmengen der Verwendung der rekursiven Methode Vorrang einräumen.
Das obige ist der detaillierte Inhalt vonSo finden Sie die fortlaufenden Nummern eines Arrays in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!