1963. Nombre minimum d'échanges pour équilibrer la chaîne
Difficulté :Moyen
Sujets : Deux pointeurs, chaîne, pile, gourmand
Vous recevez une chaîne indexée à 0 s de longueur pair n. La chaîne est composée de exactement n/2 parenthèses ouvrantes '[' et n/2 parenthèses fermantes ']'.
Une chaîne est dite équilibrée si et seulement si :
Vous pouvez échanger les parenthèses à n'importe quel deux indices n'importe quel nombre de fois.
Renvoyer le nombre minimum de swaps pour réaliser des s équilibrés.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Nous pouvons utiliser une approche à deux points, qui est efficace compte tenu des contraintes.
Suivi de l'équilibre : au fur et à mesure que nous parcourons la chaîne, nous pouvons suivre l'équilibre entre les parenthèses d'ouverture et de fermeture :
Identifier le déséquilibre : Lorsque le solde devient négatif, cela indique qu'il y a plus de parenthèses fermantes ']' que de parenthèses ouvrantes '[' à ce stade de la chaîne. C'est là que nous devons échanger les crochets pour équilibrer la corde.
Compter les Swaps : Pour corriger un déséquilibre :
Implémentons cette solution en PHP : 1963. Nombre minimum d'échanges pour équilibrer la chaîne
Explication:
Suivi du solde :
- le solde garde une trace de la différence entre le nombre de '[' et ']'.
- Si le solde devient négatif, cela indique qu'il y a plus de ']' que de '[' à ce stade.
Calculer le déséquilibre maximum :
- max_imbalance stocke le plus gros déséquilibre rencontré lors de l'itération.
- Si le solde devient négatif, mettez à jour max_imbalance avec le plus grand de max_imbalance ou -balance.
Calculer les échanges :
- Pour corriger un déséquilibre, le swap minimum requis est de (max_imbalance 1) / 2.
Complexité temporelle :
Cette solution garantit que nous respectons les contraintes, même pour des intrants importants.
Liens de contact
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是使琴弦平衡最少的交換次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!