目次
例例
方法1
- O(N^3)。3 つのネストされたループを使用しているためです。
変数「cnt」を定義します
文字列配列をループし、すべての配列値をマップに保存します。
配列要素の最初の文字を交換することで、新しく生成されたペアの総数を学習します。時間計算量の点で 2 番目のメソッドのコードを最適化しましたが、空間計算量の点では最初のコードの方が優れています。
ホームページ バックエンド開発 C++ 指定された配列内の文字列ペアの最初の文字を交換することによって取得された新しい文字列ペアの数をカウントします。

指定された配列内の文字列ペアの最初の文字を交換することによって取得された新しい文字列ペアの数をカウントします。

Sep 16, 2023 pm 06:49 PM
配列 計算する 交換

指定された配列内の文字列ペアの最初の文字を交換することによって取得された新しい文字列ペアの数をカウントします。

この問題では、文字列のペアを選択し、それらの最初の文字を交換する必要があります。その後、新しいペアの総数を計算する必要があります。この問題は、各ペアの最初の文字を交換し、それが配列内に存在するかどうかを確認することで解決できます。

この問題を解決する効率的な方法は、ハッシュ マップ データ構造を使用することです。

問題ステートメント - N 個の文字列を含む配列があります。すべての配列要素から任意の 2 つの文字列を選択し、これら 2 つの文字列の最初の文字を交換できます。配列内に存在しない、生成された新しい文字列ペアの合計数をカウントする必要があります。

例例

入力 – array[] = {「すべき」、「だろう」、「できる」};

出力 – 3

説明 – 新しく生成されたペアは、 Could と wan になります。別のペアは、誰が、そしてそうすべきである可能性があります。 3 番目のペアは san と chould です。

入力 – array[] = {"デモ", "テスト"};

出力 – 1

説明 – 配列内に存在しない、新しく生成されたペアは temo と dest です。

方法1

このメソッドでは、2 つのネストされたループを使用して、配列要素のすべてのペアを取得します。その後、2 つのペアの最初の文字を交換します。次に、3 番目のネストされたループを使用して、配列にペアが含まれているかどうかを確認します。

###アルゴリズム###

    「cnt」変数を定義し、0 に初期化して、ペアの総数を保存します。
  • 2 つのネストされたループを使用して文字列配列を反復処理し、配列要素の各ペアを取得します。
  • 現在の 2 つの文字列のペアを取得します。
  • 2 つの文字列の最初の文字が等しくない場合は、それらを交換します
  • 「isFirst」変数と「isSecond」変数を定義し、それらを false で初期化して、新しく生成された文字列が配列内に存在するかどうかを追跡します。
  • 3 番目のネストされたループを使用して、配列内に新しく生成された文字列があるかどうかを確認します。さらに、isFirst 変数と isSecond 変数の値は、配列内の文字列に基づいて更新されます。
  • 配列に最初の文字列も 2 番目の文字列も存在しない場合は、「cnt」の値を 1 増やします。
  • 「cnt」変数の値を返します。
  • ###例### リーリー ###出力### リーリー
時間計算量

- O(N^3)。3 つのネストされたループを使用しているためです。

空間の複雑さ

– O(1) 方法 2

このメソッドでは、マップ データ構造を使用して、マップ内のすべての配列値を保存します。その後、マップに新しく生成された文字列が含まれているかどうかを確認できます。そうでない場合は、カウントを 1 つ増やします。 ###アルゴリズム###

変数「cnt」を定義します

文字列配列をループし、すべての配列値をマップに保存します。

  • 2 つのネストされたループを使用して、配列要素のすべてのペアを取得します。

  • 文字列のペアを取得し、「first」変数と「first」変数に格納します。

  • 2 つの文字列の最初の文字が等しくない場合は、それらを交換します。

  • マップに、新しく生成された文字列が含まれているかどうかを確認します。そうでない場合は、「cnt」の値を 1 増やします。

  • 「cnt」値を返します。

  • ###例### リーリー ###出力### リーリー

    時間計算量
  • - O(N^2)、入れ子になったループを 2 つ使用するため。
  • 空間複雑度
  • – マッピングを使用してすべての配列要素を格納するため、O(N)。

配列要素の最初の文字を交換することで、新しく生成されたペアの総数を学習します。時間計算量の点で 2 番目のメソッドのコードを最適化しましたが、空間計算量の点では最初のコードの方が優れています。

以上が指定された配列内の文字列ペアの最初の文字を交換することによって取得された新しい文字列ペアの数をカウントします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CUDA の汎用行列乗算: 入門から習熟まで! CUDA の汎用行列乗算: 入門から習熟まで! Mar 25, 2024 pm 12:30 PM

General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 GEMM の実装に関する徹底的な調査と最適化は、ハイ パフォーマンス コンピューティングとソフトウェア システムとハードウェア システムの関係をより深く理解するのに役立ちます。コンピューター サイエンスでは、GEMM を効果的に最適化すると、計算速度が向上し、リソースが節約されます。これは、コンピューター システムの全体的なパフォーマンスを向上させるために非常に重要です。 GEMM の動作原理と最適化方法を深く理解することは、最新のコンピューティング ハードウェアの可能性をより有効に活用し、さまざまな複雑なコンピューティング タスクに対してより効率的なソリューションを提供するのに役立ちます。 GEMMのパフォーマンスを最適化することで

foreach ループを使用して PHP 配列から重複要素を削除するにはどうすればよいですか? foreach ループを使用して PHP 配列から重複要素を削除するにはどうすればよいですか? Apr 27, 2024 am 11:33 AM

foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP 配列ディープ コピーの技術: さまざまな方法を使用して完璧なコピーを実現する PHP 配列ディープ コピーの技術: さまざまな方法を使用して完璧なコピーを実現する May 01, 2024 pm 12:30 PM

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 May 03, 2024 pm 09:03 PM

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

データソートにおけるPHP配列グループ化機能の応用 データソートにおけるPHP配列グループ化機能の応用 May 04, 2024 pm 01:03 PM

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP 配列のディープ コピーのベスト プラクティス: 効率的な方法を発見する PHP 配列のディープ コピーのベスト プラクティス: 効率的な方法を発見する Apr 30, 2024 pm 03:42 PM

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

PHP 配列の多次元ソートの実践: 単純なシナリオから複雑なシナリオまで PHP 配列の多次元ソートの実践: 単純なシナリオから複雑なシナリオまで Apr 29, 2024 pm 09:12 PM

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP 配列のマージおよび重複排除アルゴリズム: 並列ソリューション PHP 配列のマージおよび重複排除アルゴリズム: 並列ソリューション Apr 18, 2024 pm 02:30 PM

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。

See all articles