2593. Trouver le score d'un tableau après avoir marqué tous les éléments
Difficulté :Moyen
Sujets : Tas (file d'attente prioritaire), tri, tableau, simulation, table de hachage, ensemble ordonné, carte ordonnée, gourmand, pile monotone, fenêtre coulissante, deux pointeurs, pile, file d'attente, manipulation de bits, Diviser pour mieux régner, programmation dynamique, liste doublement chaînée, flux de données, tri par base, retour en arrière, masque de bits, arbre, conception, fonction de hachage, Chaîne, itérateur, tri par comptage, liste chaînée
Vous recevez un tableau numérique composé d'entiers positifs.
En commençant par score = 0, appliquez l'algorithme suivant :
Renvoyez le score que vous obtenez après avoir appliqué l'algorithme ci-dessus.
Exemple 1 :
Exemple 2 :
Contraintes :
Indice :
Solution :
Nous pouvons simuler efficacement le processus de marquage en utilisant un tableau trié ou une file d'attente prioritaire pour garder une trace du plus petit élément non marqué. Nous pouvons donc utiliser l'approche suivante :
Implémentons cette solution en PHP : 2593. Trouver le score d'un tableau après avoir marqué tous les éléments
Explication:
Construction en tas :
- La fonction usort trie le tableau en fonction des valeurs et par index lorsque les valeurs sont liées.
- Cela garantit que nous traitons toujours le plus petit élément non marqué avec le plus petit indice.
Logique de marquage :
- Pour chaque élément non marqué, nous le marquons ainsi que ses éléments adjacents à l'aide du tableau marqué.
- Cela garantit que nous ignorons efficacement les éléments précédemment marqués.
Complexité temporelle :
- Tri du tas : O(n log n)
- Traitement du tas : O(n)
- Global : O(n log n), ce qui est efficace pour les contraintes données.
Complexité spatiale :
- Tableau marqué : O(n)
- Tas : O(n)
- Total : O(n)
Cette solution répond aux contraintes et fonctionne efficacement pour les gros intrants.
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!