目次
スペースの複雑さ - 要素を両端キューに格納する場合は O(N)。
deque データ構造により、左右の回転操作を O(1) 時間で実行できます。したがって、特定のクエリを実行するコードの効率が向上します。
ホームページ バックエンド開発 C++ 指定されたクエリに従って配列要素を並べ替えて更新します

指定されたクエリに従って配列要素を並べ替えて更新します

Sep 14, 2023 pm 04:29 PM
配列 更新する 並べ替える

指定されたクエリに従って配列要素を並べ替えて更新します

この質問では、配列要素に対して指定されたクエリを実行します。クエリには、配列要素の左回転、右回転、更新のループが含まれています。

問題を解決するための論理的な部分は、配列の回転です。配列を左に回転する簡単な方法は、各要素を次の要素に置き換え、最後の要素を最初の要素に置き換えることです。

deque データ構造を使用すると、配列を効率的に回転できます。

問題ステートメント - 整数値を含む arr[] 配列が与えられています。さらに、K 個のクエリを含む request[] 配列が与えられます。次のルールに従って、arr[] 配列要素に対して request[] で指定された各クエリを実行する必要があります。

  • {0} - 配列に対して循環左回転を実行します。

  • {1) - 配列に対して右循環回転を実行します。

  • {2, p, q} - インデックス p の要素を q で更新します。

  • {3, p} - インデックス p の要素を出力します。

######例###### ######入力###### リーリー ######出力###### リーリー

説明- 各クエリを実行してみましょう。

{1} -> 配列を右に回転すると、配列は {51, 8, 9, 13, 44, 76, 67, 21}

になります。 {0} -> 更新された配列を左に回転すると、配列は {8, 9, 13, 44, 76, 67, 21, 51} になります。

{2, 4, 50} -> インデックス 4 の要素を 50 に更新すると、配列は {8, 9, 13, 44, 50, 67, 21, 51}

  • {3, 2} -> 2 番目のインデックスにある要素を出力します。

  • {2, 2, 223}-> 2 番目のインデックスの要素を 223 に更新すると、配列は {8, 9, 223, 44, 50, 67, 21, 51} になります。

  • {3, 2} -> 2 番目のインデックスにある要素を出力します。

  • ######入力###### リーリー ######出力###### リーリー

    説明
  • - 配列を 2 番目と 0 番目のインデックスから出力します。
  • ######入力###### リーリー ######出力###### リーリー

    p>説明

  • - 配列を右に 2 回回転すると、配列は [51, 78, 76, 20] になります。最初のインデックスの要素は 78 です。
  • 方法1

  • このアプローチでは、各クエリをループし、指定されたクエリに基づいて操作を実行します。配列内の各要素を次の要素に置き換えて左に回転させ、各要素を前の要素に置き換えて右に回転させます。
###アルゴリズム###

ステップ 1- 各クエリのループを開始します。

ステップ 2- query[p][0] が 0 に等しい場合は、以下の手順に従ってください。

ステップ 2.1- 配列の最初の要素を使用して「temp」変数を初期化します。

ステップ 2.2- 配列の走査を開始し、各要素を次の要素に置き換えます。

ステップ 2.3- 最後の要素を「temp」値に置き換えます。

ステップ 3- query[p][0] が 1 に等しい場合は、以下の手順に従います。

ステップ 3.1

- 配列の最後の要素を「temp」変数に保存します。

ステップ 3.2

- 配列の走査を開始し、各要素を前の要素に置き換えます。

ステップ 3.3

- 最初の要素を「temp」値で更新します。

ステップ 4

-requests[p][0] が 2 の場合、指定されたインデックスにある配列要素を指定された値で更新します。

ステップ 5

- request[p][0] が 3 の場合、指定されたインデックスの配列値を出力します。 ###例### リーリー ###出力### リーリー 時間計算量 - O(N*K)、クエリを走査し、配列を回転します。

一定空間を使用するため、空間複雑度 - O(1)。 方法 2

このメソッドでは、両端キューを使用して配列要素を保存します。その後、配列を左に回転するには、キューから前の要素をポップし、キューの最後にプッシュします。同様に、配列を正しい方向に回転できます。 ###アルゴリズム###

ステップ 1

- デキューを定義し、すべての配列要素をキューにプッシュします。

ステップ 2

- for ループを使用して、各クエリを反復処理します。

ステップ 3

- 配列を左に回転するには、キューの先頭から最初の要素を削除し、キューの最後にプッシュします。

ステップ 4

- 配列を正しい方向に回転するには、キューの最後から要素を削除し、その要素を先頭にプッシュします。

ステップ 5

- 指定されたクエリに基づいて要素を更新するか、要素の値を出力します。 ###例### リーリー ###出力### リーリー 時間計算量 - 配列要素をキューに挿入する場合の O(N K)。

スペースの複雑さ - 要素を両端キューに格納する場合は O(N)。

deque データ構造により、左右の回転操作を O(1) 時間で実行できます。したがって、特定のクエリを実行するコードの効率が向上します。

以上が指定されたクエリに従って配列要素を並べ替えて更新しますの詳細内容です。詳細については、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)

Windows は指定されたデバイス、パス、またはファイルにアクセスできません Windows は指定されたデバイス、パス、またはファイルにアクセスできません Jun 18, 2024 pm 04:49 PM

友人のコンピュータにはこのような障害があり、「この PC」と C ドライブのファイルを開くと、「Explorer.EXE Windows は指定されたデバイス、パス、またはファイルにアクセスできません。プロジェクトにアクセスするための適切な権限がない可能性があります。」と表示されます。フォルダ、ファイル、このコンピュータ、ごみ箱などを含め、ダブルクリックするとこのようなウィンドウが表示されますが、通常は右クリックで開きます。システムのアップデートが原因でこの状況が発生した場合は、以下のエディターで解決方法を説明します。 1. レジストリ エディターを開いて Win+R と入力し、「regedit」と入力するか、スタート メニューを右クリックして実行し、「regedit」と入力します。 2. レジストリ「Computer\HKEY_CLASSES_ROOT\PackagedCom\ClassInd」を見つけます。

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

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

Windows が更新を永久に一時停止し、Windows が自動更新をオフにする Windows が更新を永久に一時停止し、Windows が自動更新をオフにする Jun 18, 2024 pm 07:04 PM

Windows アップデートにより、次の問題が発生する可能性があります。 1. 互換性の問題: 一部のアプリケーション、ドライバー、またはハードウェア デバイスは、新しい Windows アップデートと互換性がなく、適切に動作しなかったり、クラッシュしたりする可能性があります。 2. パフォーマンスの問題: Windows アップデートにより、システムが遅くなったり、パフォーマンスが低下したりする場合があります。これは、新機能または改善により、実行するためにより多くのリソースが必要になることが原因である可能性があります。 3. システムの安定性の問題: 一部のユーザーは、Windows 更新プログラムをインストールした後、システムで予期しないクラッシュやブルー スクリーン エラーが発生する可能性があると報告しました。 4. データ損失: まれに、Windows アップデートによりデータ損失やファイル破損が発生する場合があります。このため、重要な更新を行う前に、バックアップを作成してください。

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

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

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

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

AMD、Zen 2 プロセッサに影響を与える Zenbleed の脆弱性を修正する新しい AGESA ファームウェア アップデートをリリース AMD、Zen 2 プロセッサに影響を与える Zenbleed の脆弱性を修正する新しい AGESA ファームウェア アップデートをリリース May 03, 2024 pm 04:31 PM

5 月 3 日のこのサイトのニュースによると、MSI は本日、AMD Ryzen4000 シリーズ Zen2 APU の Zenbleed セキュリティ脆弱性を修正する AMDAM4AGESA1.2.0.Ca ファームウェア アップデートをリリースしました。今回MSIがリリースしたファームウェアアップデートは、ほぼすべてのX570マザーボードに適しており、主にAMDが中程度の脅威に分類しているZen2プロセッサのCVE-2023-20593を修正している。このサイトからのメモ: 脆弱性追跡番号は CVE-2023-20593 で、コアあたり 1 秒あたり 30 KB の速度で機密データを盗む可能性があります。この攻撃は、仮想マシン、サンドボックス、コンテナ、プロセスなど、CPU 上で実行されているすべてのソフトウェアに影響します。 AGESA1.2.0.Caの目的ですが

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

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

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

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

See all articles