2134. Échanges minimum pour regrouper tous les 1 ensemble II
Moyen
Un swap est défini comme prenant deux positions distinctes dans un tableau et en échangeant les valeurs qu'elles contiennent.
Un tableau circulaire est défini comme un tableau où l'on considère le premier élément et le dernier élément comme adjacent.
Étant donné un tableau circulaire binaire, renvoie le nombre minimum d'échanges requis pour regrouper tous les 1 présents dans le tableau à n'importe quel emplacement.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Pour résoudre ce problème, nous pouvons suivre ces étapes :
Implémentons cette solution en PHP : 2134. Échanges minimum pour regrouper tous les 1 ensemble II
Explication:
- Comptez le nombre total de 1 : calculez le nombre total de 1 dans le tableau d'origine.
- Étendre le tableau : concatène le tableau d'origine à lui-même pour gérer la nature circulaire.
- Fenêtre initiale : Comptez le nombre de 0 dans la fenêtre initiale de taille égale au nombre total de 1.
- Fenêtre coulissante : faites glisser la fenêtre sur le tableau étendu. Pour chaque nouvelle position, mettez à jour le nombre de 0 en fonction des éléments entrant et sortant de la fenêtre.
- Trouver le minimum : Gardez une trace du nombre minimum de 0 rencontrés, qui correspond au nombre minimum d'échanges nécessaires.
Cette solution gère efficacement le tableau circulaire en le transformant en un problème linéaire et utilise la technique de la fenêtre glissante pour maintenir un nombre courant de 0 dans chaque fenêtre de taille égale au nombre total de 1.
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!