Maison > Article > développement back-end > . La plus petite plage couvrant les éléments des listes K
632. La plus petite gamme couvrant les éléments des listes K
Difficulté : Difficile
Sujets : Tableau, table de hachage, gourmand, fenêtre coulissante, tri, tas (file d'attente prioritaire)
Vous avez k listes d'entiers triés dans ordre non décroissant. Trouvez la la plus petite plage qui comprend au moins un numéro de chacune des k listes.
Nous définissons que la plage [a, b] est plus petite que la plage [c, d] si b - a < d - c ou a < c si b - a == d - c.
Exemple 1 :
Exemple 2 :
Contraintes :
Solution :
Nous pouvons utiliser un min-heap (ou file d'attente prioritaire) pour suivre le plus petit élément de chaque liste tout en maintenant une fenêtre glissante pour trouver la plus petite plage comprenant au moins un élément de chaque liste.
Implémentons cette solution en PHP : 632. La plus petite gamme couvrant les éléments des listes K
Explication:
- Initialisation du tas :
- Le tas initial contient le premier élément de chaque liste. Nous gardons également une trace de l'élément maximum parmi les premiers éléments.
- Traitement du tas :
- Extrayez l'élément minimum du tas, puis essayez d'étendre la plage en ajoutant l'élément suivant de la même liste (si disponible).
- Après avoir ajouté un nouvel élément au tas, mettez à jour maxValue si le nouvel élément est plus grand.
- Mettez à jour la plus petite plage chaque fois que la différence entre maxValue et minValue est inférieure à la plage précédemment enregistrée.
- Résiliation :
- La boucle s'arrête lorsqu'une liste manque d'éléments, car nous ne pouvons plus inclure toutes les listes dans la plage.
Analyse de complexité
Cette solution trouve efficacement la plus petite plage comprenant au moins un numéro de chacune des k listes triées.
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!