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 kita 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
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci Bilangan Minimum Pertukaran untuk Menjadikan Rentetan Seimbang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!