Maison > Article > développement back-end > Nombre minimum de suppressions pour créer un tableau de montagne
1671. Nombre minimum de suppressions pour créer un tableau de montagne
Difficulté : Difficile
Sujets :Array, recherche binaire, programmation dynamique, gourmand
Vous vous souvenez peut-être qu'un tableau arr est un tableau de montagne si et seulement si :
Étant donné un tableau entier nums, renvoie le nombre minimum d'éléments à supprimer pour faire de nums un tableau de montagne.
Exemple 1 :
Exemple 2 :
Contraintes :
Indice :
Solution :
Nous pouvons utiliser une approche de programmation dynamique avec l'idée de trouver la sous-séquence maximale de montagne plutôt que de compter directement les éléments à supprimer. Cette approche est basée sur la recherche de deux Sous-séquences croissantes les plus longues (LIS) pour chaque position du tableau : l'une allant de gauche à droite et l'autre allant de droite à- à gauche. Une fois que nous aurons la sous-séquence de montagne la plus longue possible, la différence entre la longueur du tableau d'origine et cette longueur de sous-séquence nous donnera le minimum d'éléments à supprimer.
Identifier les longueurs de sous-séquences croissantes :
Identifier les longueurs de sous-séquences décroissantes :
Calculer la longueur maximale de la montagne :
Obtenez le minimum de suppressions :
Implémentons cette solution en PHP : 1671. Nombre minimum de retraits pour réaliser un tableau de montagne
<?php /** * @param Integer[] $nums * @return Integer */ function minimumMountainRemovals($nums) { ... ... ... /** * go to ./solution.php */ } // Example usage $nums1 = [1, 3, 1]; echo minimumMountainRemovals($nums1); // Output: 0 $nums2 = [2, 1, 1, 5, 6, 2, 3, 1]; echo minimumMountainRemovals($nums2); // Output: 3 ?>
Calcul LIS gauche :
Calcul LIS droit :
Calcul de la montagne :
Calcul final :
Cette solution garantit que nous trouvons la sous-séquence de montagnes maximale et calculons les suppressions minimales requises pour obtenir un réseau de montagnes.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
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!