542. 01 Matriks
Kesukaran: Sederhana
Topik: Tatasusunan, Pengaturcaraan Dinamik, Breadth-First Search, Matriks
Diberikan tikar matriks binari m x n, kembalikan jarak 0 terdekat untuk setiap sel.
Jarak antara dua sel yang berkongsi tepi sepunya ialah 1.
Contoh 1:
Contoh 2:
Kekangan:
Nota: Soalan ini sama dengan 1765. Peta Puncak Tertinggi
Penyelesaian:
Kami akan menggunakan Breadth-First Search (BFS) berbilang sumber, di mana semua 0 sel dianggap sebagai titik permulaan (sumber). Untuk setiap 1 sel, kami mengira jarak minimum ke 0 terdekat.
Mari laksanakan penyelesaian ini dalam PHP: 542. 01 Matriks
<?php /** * @param Integer[][] $mat * @return Integer[][] */ function updateMatrix($mat) { ... ... ... /** * go to ./solution.php */ } // Example usage: $mat1 = [[0,0,0],[0,1,0],[0,0,0]]; $mat2 = [[0,0,0],[0,1,0],[1,1,1]]; echo updateMatrix($mat1) . "\n"; // Output: [[0,0,0],[0,1,0],[0,0,0]] echo updateMatrix($mat2) . "\n"; // Output: [[0,0,0],[0,1,0],[1,2,1]] ?>
Permulaan:
BFS Berbilang Sumber:
Output:
Input 1:
$mat1 = [ [0, 0, 0], [0, 1, 0], [0, 0, 0] ];
Output 1:
Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [1] => Array ( [0] => 0 [1] => 1 [2] => 0 ) [2] => Array ( [0] => 0 [1] => 0 [2] => 0 ) )
Input 2:
$mat2 = [ [0, 0, 0], [0, 1, 0], [1, 1, 1] ];
Output 2:
Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [1] => Array ( [0] => 0 [1] => 1 [2] => 0 ) [2] => Array ( [0] => 1 [1] => 2 [2] => 1 ) )
Penyelesaian ini cekap dengan kerumitan masa O(m × n), kerana setiap sel diproses sekali. Kerumitan ruang juga O(m × n) disebabkan tatasusunan jarak dan baris gilir BFS.
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 . Matriks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!