Maison >développement back-end >Problème PHP >Comment trouver des nombres non consécutifs dans une séquence de nombres en php
En développement PHP, il est souvent nécessaire de trouver des nombres discontinus dans une séquence de nombres. Comment répondre à cette exigence de manière rapide et efficace ? Cet article vous l’expliquera en détail.
1. Contexte du problème
Trouver des nombres discontinus dans une séquence de nombres, c'est-à-dire trouver les nombres qui ont un certain intervalle à partir du nombre suivant après un certain nombre. Par exemple, étant donné une séquence [1, 2, 6, 7, 9, 12, 15, 17] et demandé de trouver des nombres discontinus, en supposant que l'intervalle est 4, la valeur de retour est [2, 9, 17].
2. Analyse du problème
Pour répondre à cette exigence, nous devons parcourir toute la séquence de nombres et effectuer le traitement suivant pour chaque numéro :
Dans une implémentation spécifique, les méthodes suivantes peuvent être utilisées :
Parcourez la séquence de nombres et traitez chaque nombre.
Le code d'implémentation spécifique est le suivant :
function findDiscontinuousNumbers($nums, $interval) { $result = []; $previous = null; foreach ($nums as $num) { if (!is_null($previous) && $num - $previous == $interval) { $result[] = $num; } $previous = $num; } return $result; } $nums = [1, 2, 6, 7, 9, 12, 15, 17]; $interval = 4; $result = findDiscontinuousNumbers($nums, $interval); print_r($result);
3. Optimisation du code
L'implémentation ci-dessus peut déjà répondre aux exigences, mais elle peut ne pas être efficace dans une utilisation réelle. Considérez l'optimisation suivante :
Le code optimisé est le suivant :
function findDiscontinuousNumbers($nums, $interval) { $result = []; $previous = null; $last_discontinuous_index = null; // 上一次不连续数字的索引位置 for ($i = 0; $i < count($nums); ) { if (!is_null($previous)) { if ($nums[$i] - $previous == $interval) { $result[] = $nums[$i]; } else { $previous = $nums[$i]; $last_discontinuous_index = $i; } } else { $previous = $nums[$i]; $last_discontinuous_index = $i; } $i += ($i == $last_discontinuous_index + 1) ? 1 : $interval; } return $result; } $nums = [1, 2, 6, 7, 9, 12, 15, 17]; $interval = 4; $result = findDiscontinuousNumbers($nums, $interval); print_r($result);
IV Résumé
Cet article présente brièvement la méthode de recherche de nombres discontinus en PHP et donne l'implémentation de base. En utilisation réelle, des méthodes de mise en œuvre et des mesures d'optimisation appropriées doivent être sélectionnées en fonction des différents besoins pour obtenir de meilleures performances et de meilleurs effets.
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!