Maison > développement back-end > Problème PHP > php exclut l'élément actuel du tableau de produits

php exclut l'élément actuel du tableau de produits

PHPz
Libérer: 2023-05-19 17:45:37
original
463 Les gens l'ont consulté

PHP est un langage de script largement utilisé dans le domaine du développement Web. En PHP, nous rencontrons souvent des situations où des tableaux doivent être traités. Par exemple, étant donné un tableau, il est nécessaire de calculer le produit des éléments restants après avoir supprimé l'élément actuel. Cet article explique comment utiliser PHP pour implémenter le tableau de produits après avoir supprimé l'élément actuel.

1. Idée originale :

Nous pouvons utiliser deux boucles pour compléter cette exigence :

  • La boucle externe traverse chaque élément
  • La boucle interne calcule le produit d'éléments autres que l'élément actuellement traversé

Cependant, le La complexité temporelle de cette méthode est O(n^2). Lorsqu'il y a trop d'éléments du tableau, le temps d'exécution du programme augmentera considérablement. Par conséquent, nous devons changer notre façon de penser pour améliorer l’efficacité des algorithmes.

2. Idée d'optimisation :

Nous pouvons d'abord calculer le produit du tableau entier, puis diviser le produit du tableau entier par l'élément actuel en fonction de l'élément actuel pour obtenir le produit après avoir supprimé l'élément actuel.

Cependant, cette méthode aura des problèmes lorsque l'élément actuel est 0, car diviser par 0 n'a aucun sens. Par conséquent, nous devons gérer le cas où l’élément actuel est 0.

3. Code complet :

Le code PHP complet est donné ci-dessous :

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;
}
Copier après la connexion

4. Analyse du code :

Le code ci-dessus adopte l'idée suivante : Tout d'abord, scannez l'ensemble du tableau et calculez le produit des éléments non nuls. dans le tableau. En même temps, enregistrez le nombre de 0 dans le tableau. Deuxièmement, l'ensemble du tableau est analysé et pour chaque élément, le résultat final est calculé sur la base du produit total ci-dessus et du nombre de 0.

Parmi eux, si l'élément actuel est 0, un traitement spécial est adopté. Si le nombre de 0 dans le tableau est supérieur à 1, un tableau dans lequel tous les éléments sont 0 est directement renvoyé, sinon le produit des éléments courants est 0.

5. Cas de test :

Voici plusieurs ensembles de données de test :

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

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

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

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

6. PHP pour implémenter la suppression Le tableau de produits après l'élément actuel. Grâce à des algorithmes d'optimisation, la complexité temporelle du programme peut être efficacement réduite et l'efficacité d'exécution du programme peut être améliorée. Dans le développement réel, nous devons choisir l'algorithme optimal pour traiter les tableaux en fonction de circonstances spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal