Heim  >  Artikel  >  Backend-Entwicklung  >  PHP schließt das aktuelle Element aus dem Produktarray aus

PHP schließt das aktuelle Element aus dem Produktarray aus

PHPz
PHPzOriginal
2023-05-19 17:45:37431Durchsuche

PHP ist eine weit verbreitete Skriptsprache, die häufig im Bereich der Webentwicklung verwendet wird. In PHP stoßen wir häufig auf Situationen, in denen Arrays verarbeitet werden müssen. Bei einem gegebenen Array ist es beispielsweise erforderlich, das Produkt der verbleibenden Elemente nach dem Entfernen des aktuellen Elements zu berechnen. In diesem Artikel wird erläutert, wie Sie mit PHP das Produktarray implementieren, nachdem Sie das aktuelle Element entfernt haben.

1. Ursprüngliche Idee:

Wir können zwei Schleifen verwenden, um diese Anforderung zu erfüllen:

  • Die äußere Schleife durchläuft jedes Element
  • Die innere Schleife berechnet das Produkt anderer Elemente als des aktuell durchlaufenen Elements

Allerdings Die zeitliche Komplexität dieser Methode beträgt O(n^2). Wenn zu viele Array-Elemente vorhanden sind, erhöht sich die Programmausführungszeit erheblich. Daher müssen wir unser Denken ändern, um die Effizienz des Algorithmus zu verbessern.

2. Optimierungsidee:

Wir können zuerst das Produkt des gesamten Arrays berechnen und dann das Produkt des gesamten Arrays basierend auf dem aktuellen Element dividieren, um das Produkt nach dem Entfernen des aktuellen Elements zu erhalten.

Diese Methode wird jedoch Probleme haben, wenn das aktuelle Element 0 ist, da eine Division durch 0 bedeutungslos ist. Daher müssen wir den Fall behandeln, in dem das aktuelle Element 0 ist.

3. Vollständiger Code:

Der vollständige PHP-Code ist unten angegeben:

function productExceptSelf($nums) {
    $length = count($nums);
    if ($length == 0) {
        return array();
    } elseif ($length == 1) {
        return array(0);
    }

    $prod = 1;
    $zeroCount = 0;
    for ($i = 0; $i < $length; $i++) {
        if ($nums[$i] == 0) {
            $zeroCount++;
            if ($zeroCount > 1) {
                return array_fill(0, $length, 0);
            }
            continue;
        }
        $prod *= $nums[$i];
    }

    $res = array();
    for ($i = 0; $i < $length; $i++) {
        if ($zeroCount == 1 && $nums[$i] != 0) {
            $res[] = 0;
            continue;
        }
        if ($zeroCount > 1) {
            $res[] = 0;
            continue;
        }
        $res[] = $nums[$i] == 0 ? $prod : $prod / $nums[$i];
    }
    return $res;
}

4. Codeanalyse:

Der obige Code übernimmt die folgende Idee: Scannen Sie zunächst das gesamte Array und berechnen Sie das Produkt der Nicht-0-Elemente im Array. Notieren Sie gleichzeitig die Anzahl der Nullen im Array. Zweitens wird das gesamte Array gescannt und für jedes Element das Endergebnis basierend auf dem obigen Gesamtprodukt und der Anzahl der Nullen berechnet.

Wenn das aktuelle Element 0 ist, wird eine spezielle Verarbeitung angewendet. Wenn die Anzahl der Nullen im Array größer als 1 ist, wird direkt ein Array zurückgegeben, in dem alle Elemente 0 sind, andernfalls ist das Produkt der aktuellen Elemente 0.

5. Testfall:

Das Folgende sind mehrere Sätze von Testdaten:

$nums = [1, 2, 3, 4];
echo implode(",", productExceptSelf($nums)); Ausgabe" 24,12,8,6"

$nums = [0, 2, 3, 4];
echo implode(",", productExceptSelf($nums)); // Ausgabe "24,0,0, 0"

$nums = [1, 0, 3, 4];
echo implode(",", productExceptSelf($nums)); // Ausgabe "0,12,0,0"

$nums = [ 1, 0, 3, 0];
echo implode(",", productExceptSelf($nums)); // Ausgabe „0,0,0,0“

6 PHP zum Implementieren der Entfernung des Produktarrays nach dem aktuellen Element. Durch Optimierungsalgorithmen kann die zeitliche Komplexität des Programms effektiv reduziert und die Ausführungseffizienz des Programms verbessert werden. In der tatsächlichen Entwicklung sollten wir den optimalen Algorithmus zur Verarbeitung von Arrays entsprechend der spezifischen Situation auswählen.

Das obige ist der detaillierte Inhalt vonPHP schließt das aktuelle Element aus dem Produktarray aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn