947。ほとんどの石が同じ行または列で削除されました
難易度: 中
トピック: ハッシュ テーブル、深さ優先検索、ユニオン検索、グラフ
2D 平面上で、いくつかの整数座標点に n 個の石を配置します。各座標点には最大 1 つの石を含めることができます。
石は、削除されていない別の石と同じ行または同じ列を共有している場合、削除できます。
長さ n の石の配列が与えられ、stones[i] = [xi, yi] が i 番目 の石の位置を表す場合、 削除できる石の最大数を返します。 .
例 1:
- 入力: 石 = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]
- 出力: 5
-
説明: 5 つの石を削除する 1 つの方法は次のとおりです。
- 石 [2,2] は [2,1] と同じ行を共有しているため、削除します。
- 石 [2,1] は [0,1] と同じ列を共有しているため、削除します。
- 石 [1,2] は [1,0] と同じ行を共有しているため、削除します。
- 石 [1,0] は [0,0] と同じ列を共有しているため、削除します。
- 石 [0,1] は [0,0] と同じ行を共有しているため、削除します。
- 石 [0,0] は、まだ平面上にある別の石と行/列を共有していないため、削除できません。
例 2:
- 入力: 石 = [[0,0],[0,2],[1,1],[2,0],[2,2]]
- 出力: 3
-
説明: 3 つの移動を行う 1 つの方法は次のとおりです。
- 石 [2,2] は [2,0] と同じ行を共有しているため、削除します。
- 石 [2,0] は [0,0] と同じ列を共有しているため、削除します。
- 石 [0,2] は [0,0] と同じ行を共有しているため、削除します。
- 石 [0,0] と [1,1] は、まだ平面上にある別の石と行/列を共有していないため、削除できません。
例 3:
- 入力: 石 = [[0,0]]
- 出力: 0
- 説明: [0,0] は平面上の唯一の石なので、削除できません。
制約:
- 1
- 0 i、yi 4
- 同じ座標点に 2 つの石はありません。
解決策:
深さ優先検索 (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 関数:
- dfs 関数は、同じ接続コンポーネント内にあるすべての石を探索するために使用されます。ストーンが現在のストーンに (同じ行または列内で) 接続されている場合、そのストーンに対して DFS を再帰的に実行します。
-
メイン関数:
- すべての石を反復処理し、まだ訪問されていない石ごとに DFS を実行して、同じ接続コンポーネント内のすべての石をマークします。
- 接続されたコンポーネントの数を数えます。その結果は、石の合計数から接続されたコンポーネントの数を引いたものになります ($n - $numComponents)。
-
実行例:
- 最初の例では、5 つの石を削除できることが正しく検出され、1 つの石は削除できないことがわかります。
複雑:
- 時間計算量: ネストされたループと DFS トラバーサルによる O(n^2)。
- 空間の複雑さ: 訪問した石を保存するための O(n)。
このソリューションは、指定された制約内で効率的に機能するはずです。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
- GitHub
以上が。ほとんどの石が同じ行または列で除去されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

Dreamweaver Mac版
ビジュアル Web 開発ツール
