1829年。各クエリの最大 XOR
難易度: 中
トピック: 配列、ビット操作、プレフィックス合計
n 個の非負の整数の sorted 配列 nums と整数の minimumBit が与えられます。次のクエリを n 回 実行したいとします:
- 非負の整数 k maximumBit。nums[0] XOR nums[1] XOR ... XOR nums[nums.length-1] XOR k が 最大化となる。 k は、i 番目 クエリに対する答えです。
- 現在の配列 nums から 最後の 要素を削除します。
配列の回答を返します。ここで、answer[i] は i 番目 クエリ に対する回答です。
例 1:
- 入力: nums = [0,1,1,3]、maximumBit = 2
- 出力: [0,3,2,3]
-
説明: クエリは次のように回答されます。
- 1stst クエリ: nums = [0,1,1,3]、k = 0 because 0 XOR 1 XOR 1 XOR 3 XOR 0 = 3.
- 2nd クエリ: nums = [0,1,1], k = 3 because 0 XOR 1 XOR 1 XOR 3 = 3.
- 3rd クエリ: nums = [0,1]、k = 2 because 0 XOR 1 XOR 2 = 3.
- 4番目 クエリ: nums = [0]、k = 3 because 0 XOR 3 = 3.
例 2:
- 入力: nums = [2,3,4,7]、maximumBit = 3
- 出力: [5,2,6,5]
-
説明: クエリは次のように回答されます。
- 1stst クエリ: nums = [2,3,4,7]、2 XOR 3 XOR 4 XOR 7 XOR 5 = 7 であるため、k = 5。
- 2nd クエリ: nums = [2,3,4]、k = 2 because 2 XOR 3 XOR 4 XOR 2 = 7.
- 3rd クエリ: nums = [2,3]、k = 6 because 2 XOR 3 XOR 6 = 7.
- 4番目 クエリ: nums = [2]、2 XOR 5 = 7 なので k = 5。
例 3:
- 入力: nums = [0,1,2,2,5,7]、maximumBit = 3
- 出力: [4,3,6,4,6,7]
制約:
- nums.length == n
- 1 5
- 1
- 0 最大ビット
- nums は 昇順 順に並べ替えられます。
ヒント:
- 可能な最大の XOR 結果は常に 2(maximumBit) - 1 であることに注意してください。
- したがって、プレフィックスの答えは、そのプレフィックスと 2(maximumBit)-1 を XOR したものになります。
解決策:
配列内の要素の XOR を効率的に計算し、k が 2^maximumBit 未満になるような値 k を使用して結果を最大化する必要があります。この問題を解決するためのアプローチは次のとおりです:
観察とアプローチ
XOR の最大化:
MaximumBit ビットのプレフィックス合計と XOR できる最大数は ( 2^{text{maximumBit}} - 1 ) です。これは、すべて 1 の数 (つまり、バイナリで 111...1) との XOR 演算が常に結果を最大化するためです。プレフィックス XOR 計算:
各クエリの XOR を再計算する代わりに、配列全体の累積 XOR を維持できます。 XOR には A XOR B XOR B = A という特性があるため、配列から最後の要素を削除するには、累積 XOR からその要素を XOR 演算することで実現できます。-
アルゴリズム:
- 最初に nums 内のすべての要素の XOR を計算します。これを currentXOR と呼びましょう。
- 各クエリについて (最後から最初まで):
- currentXOR と maxNum の XOR 演算により、そのクエリの k の最適値を計算します (maxNum = 2^maximumBit - 1)。
- 結果リストに k を追加します。
- currentXOR から XOR して、nums から最後の要素を削除します。
- 結果リストには逆順で回答が含まれるため、最後に逆にしてください。
このソリューションを PHP で実装してみましょう: 1829。各クエリの最大 XOR
<?php /** * @param Integer[] $nums * @param Integer $maximumBit * @return Integer[] */ function getMaximumXor($nums, $maximumBit) { ... ... ... /** * go to ./solution.php */ } // Example usage: $nums = [0,1,1,3]; $maximumBit = 2; print_r(getMaximumXor($nums, $maximumBit)); // Output should be [0, 3, 2, 3] ?>
説明:
-
maxNum を計算:
- maxNum は 2^maximumBit - 1 として計算されます。これは、指定されたビット長の 2 進数ですべて 1 を含む数値です。
-
最初の XOR 計算:
- nums 内のすべての要素を XOR して、配列内のすべての数値の XOR を表す累積 XOR (currentXOR) を取得します。
-
後方への反復:
- nums の最後の要素から開始して、各ステップの最大 XOR を計算します。
- currentXOR ^ maxNum は、現在の状態の最大 k を与えます。
- 答えには k を追加します。
- 次に、nums の最後の要素を currentXOR と XOR して、次の反復の XOR 合計から「削除」します。
- nums の最後の要素から開始して、各ステップの最大 XOR を計算します。
-
答えを返す:
- リストを逆に処理したため、回答には逆順の値が含まれるため、最終的なリストはすでに要件に合わせて正しく配置されています。
複雑さの分析
- 時間計算量: O(n)。O(n) で初期 XOR を計算するため、各クエリは一定時間で処理されます。
- 空間複雑度: O(n)、答えを保存するため。
このコードは効率的であり、制約の上限を適切に処理する必要があります。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
- GitHub
以上が各クエリの最大 XORの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。


ホット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 など) をサポートします。

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

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

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック



