542。 01 マトリックス
難易度: 中
トピック: 配列、動的計画法、幅優先検索、行列
m x n のバイナリ行列マットを指定すると、各セルの最も近い 0 の距離を返します。
共通のエッジを共有する 2 つのセル間の距離は 1 です。
例 1:
例 2:
制約:
注: この質問は 1765 と同じです。最高峰の地図
解決策:
マルチソース幅優先検索 (BFS) を使用します。ここでは、すべての 0 セルが開始点 (ソース) として扱われます。 1 セルごとに、最も近い 0 までの最小距離を計算します。
このソリューションを PHP で実装してみましょう: 542。 01 マトリックス
<?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]] ?>
初期化:
マルチソース BFS:
出力:
入力 1:
$mat1 = [ [0, 0, 0], [0, 1, 0], [0, 0, 0] ];
出力 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 ) )
入力 2:
$mat2 = [ [0, 0, 0], [0, 1, 0], [1, 1, 1] ];
出力 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 ) )
このソリューションは、各セルが 1 回処理されるため、時間計算量が O(m × n) で効率的です。距離配列と BFS キューにより、空間複雑度も O(m × n) になります。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が。マトリックスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。