1963. Bilangan Minimum Pertukaran untuk Menjadikan Rentetan Seimbang
Kesukaran: Sederhana
Topik: Dua Penunjuk, Rentetan, Tindanan, Tamak
Anda diberi 0-diindeks rentetan s genap panjang n. Rentetan terdiri daripada tepat n / 2 kurungan pembukaan '[' dan n / 2 kurungan penutup ']'.
Rentetan dipanggil seimbang jika dan hanya jika:
Anda boleh menukar kurungan pada mana-mana dua indeks mana-mana bilangan kali.
Kembalikan bilangan minimum swap untuk menjadikan s seimbang.
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Kita boleh menggunakan pendekatan dua mata, yang cekap memandangkan kekangan.
Imbangan Jejak: Sambil kita mengulangi rentetan, kita boleh menjejaki keseimbangan antara kurungan pembukaan dan penutup:
Kenalpasti Ketidakseimbangan: Apabila baki menjadi negatif, ini menunjukkan bahawa terdapat lebih banyak kurungan penutup ']' daripada kurungan pembukaan '[' pada titik itu dalam rentetan. Di sinilah kita perlu menukar kurungan untuk menjadikan rentetan seimbang.
Pertukaran Kira: Untuk membetulkan ketidakseimbangan:
Mari laksanakan penyelesaian ini dalam PHP: 1963. Bilangan Minimum Pertukaran untuk Menjadikan Rentetan Seimbang
Penjelasan:
Penjejakan Baki:
- baki menjejaki perbezaan antara bilangan '[' dan ']'.
- Jika baki menjadi negatif, ini menunjukkan bahawa terdapat lebih banyak ']' daripada '[' pada ketika itu.
Kira Ketidakseimbangan Maksimum:
- max_imbalance menyimpan ketidakseimbangan terbesar yang dihadapi semasa lelaran.
- Jika baki menjadi negatif, kemas kini max_imbalance dengan max_imbalance atau -balance yang lebih besar.
Kira Swap:
- Untuk membetulkan ketidakseimbangan, pertukaran minimum yang diperlukan ialah (ketidakseimbangan_maks 1) / 2.
Kerumitan Masa:
Penyelesaian ini memastikan kami memenuhi kekangan, walaupun untuk input yang besar.
Pautan Kenalan
如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大!
如果您想要更多类似的有用内容,请随时关注我:
以上是使琴弦平衡的最少交换次数的详细内容。更多信息请关注PHP中文网其他相关文章!