947。ほとんどの石が同じ行または列で削除されました
難易度: 中
トピック: ハッシュ テーブル、深さ優先検索、ユニオン検索、グラフ
2D 平面上で、いくつかの整数座標点に n 個の石を配置します。各座標点には最大 1 つの石を含めることができます。
石は、削除されていない別の石と同じ行または同じ列を共有している場合、削除できます。
長さ n の石の配列が与えられ、stones[i] = [xi, yi] が i 番目 の石の位置を表す場合、 削除できる石の最大数を返します。 .
例 1:
例 2:
例 3:
制約:
解決策:
深さ優先検索 (DFS) アプローチを使用してソリューションを実装できます。このアイデアは、行または列によって接続されている石を、同じ接続されたコンポーネントの一部として考えることです。すべての接続コンポーネントを見つけたら、削除できる石の最大数は、石の合計数から接続コンポーネントの数を引いたものになります。
このソリューションを PHP で実装してみましょう: 947。同じ行または列で削除されたほとんどの石
<?php function removeStones($stones) { ... ... ... /** * go to ./solution.php */ } function dfs($stoneIndex, &$stones, &$visited) { ... ... ... /** * go to ./solution.php */ } // Example usage: $stones1 = array( array(0, 0), array(0, 1), array(1, 0), array(1, 2), array(2, 1), array(2, 2) ); echo removeStones($stones1); // Output: 5 $stones2 = array( array(0, 0), array(0, 2), array(1, 1), array(2, 0), array(2, 2) ); echo removeStones($stones2); // Output: 3 $stones3 = array( array(0, 0) ); echo removeStones($stones3); // Output: 0 ?>
DFS 関数:
メイン関数:
実行例:
このソリューションは、指定された制約内で効率的に機能するはずです。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が。ほとんどの石が同じ行または列で除去されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。