947. Kebanyakan Batu Dialih Keluar dengan Baris atau Lajur yang Sama
Kesukaran: Sederhana
Topik: Jadual Hash, Carian Pertama Kedalaman, Carian Kesatuan, Graf
Pada satah 2D, kami meletakkan n batu pada beberapa titik koordinat integer. Setiap titik koordinat mungkin mempunyai paling banyak satu batu.
Batu boleh dialihkan jika ia berkongsi sama ada baris yang sama atau lajur yang sama dengan batu lain yang belum dialihkan.
Memandangkan susunan batu dengan panjang n di mana batu[i] = [xi, yi] mewakili lokasi batu ith, kembalikan bilangan batu terbesar yang boleh dialihkan .
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Penyelesaian:
Kami boleh melaksanakan penyelesaian menggunakan pendekatan Depth-First Search (DFS). Ideanya adalah untuk mempertimbangkan batu yang disambungkan oleh baris atau lajur sebagai sebahagian daripada komponen yang disambungkan yang sama. Sebaik sahaja anda menemui semua komponen yang disambungkan, bilangan maksimum batu yang boleh dialihkan ialah jumlah bilangan batu tolak bilangan komponen yang disambungkan.
Mari kita laksanakan penyelesaian ini dalam PHP: 947. Kebanyakan Batu Dialih Keluar dengan Baris atau Lajur yang Sama
Penjelasan:
Fungsi DFS:
- Fungsi dfs digunakan untuk meneroka semua batu yang berada dalam komponen bersambung yang sama. Jika batu disambungkan (dalam baris atau lajur yang sama) ke batu semasa, kami melakukan DFS secara rekursif pada batu itu.
Fungsi Utama:
- Kami mengulangi semua batu, dan untuk setiap batu yang belum dilawati, kami melakukan DFS untuk menandakan semua batu dalam komponen yang disambungkan yang sama.
- Kami mengira bilangan komponen yang disambungkan dan hasilnya ialah jumlah bilangan batu tolak bilangan komponen yang disambungkan ($n - $numComponents).
Contoh Pelaksanaan:
- Untuk contoh pertama, ia betul mendapati 5 batu boleh dikeluarkan, meninggalkan 1 batu yang tidak boleh dikeluarkan.
Kerumitan:
Penyelesaian ini harus berfungsi dengan cekap dalam kekangan yang diberikan.
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 . Kebanyakan Batu Dialih Keluar dengan Baris atau Lajur yang Sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!