指定された操作を実行した後に可能な配列の合計の最大値
この質問では、配列要素に対して指定された操作を実行し、最終的な最大合計を求めます。
ここでは、各操作で配列から最大 X[p] 要素を選択し、それらを Y[p] 要素に置き換えることで合計を最大化できます。
単純なアプローチでは、Y[p] 要素よりも小さい X[p] 配列要素を見つけて、それらを Y[p] に置き換えます。
効率的なアプローチでは、優先キューを使用して最大合計を取得します。
問題ステートメント- N 個の数値を含む nums[] 配列が与えられます。同時に、M 個の整数を含む X[] 配列と Y[] 配列が与えられます。 nums[] 配列に対して次の操作を実行する必要があります。
X[] 要素と Y[] 要素の各要素に対して M 回の操作を実行する必要があります。各操作では、配列 nums[] から最大の X[p] 要素を選択し、それを Y[p] に置き換える必要があります。
与えられたタスクは、M 回の操作を実行した後、nums[] 配列の要素の最大合計を見つけることです。
例例
######入力###### リーリー ######出力###### リーリー説明 - 各操作を 1 つずつ実行してみましょう。
最初の操作では、7 つの要素を 500 に置き換えます。したがって、配列は {10, 8, 500, 60, 20, 18, 30, 60} になります。
2 番目の操作では、最大 2 つの要素を 10 に置き換えることができますが、10 未満の要素は 1 つだけです。したがって、8 を 10 に置き換えると、配列は {10, 10, 500, 60, 20, 18, 30, 60} になります。
3 番目の操作では、最大 5 つの要素を 2 つの要素に置き換えることができますが、配列には 2 未満の要素はありません。したがって、要素を置き換えることはありません。
- ######入力###### リーリー ######出力###### リーリー 説明 - y[] 配列のすべての要素は、元の配列の要素よりも小さくなります。したがって、最大合計を取得するために、指定された配列の要素を置換する必要はありません。
- ######入力###### リーリー ######出力###### リーリー 説明 - ここでは、各操作で最大 x[p] 要素を置き換えることができます。最後の操作では、配列内の各要素を 100 に置き換えることができ、最大合計は 100 になります。
方法 1 このメソッドでは、x[] 配列と y[] 配列を反復処理します。各反復では、配列をソートして、y[p] 要素より小さい最大 x[p] 個の配列要素を取得し、それらを y[p] に置き換えます。
###アルゴリズム###ステップ 1 - 「maxSum」を 0 に初期化します。これは、配列要素の最大合計を格納するために使用されます。
ステップ 2 - x[] および y[] 配列要素の走査を開始します。
ステップ 3 - x[p] の値を一時変数に保存し、nums[] 配列を並べ替えます。
ステップ 4- ループ内でソートされた配列の走査を開始します。
ステップ 5 - 温度が 0 より大きく、nums[q] が y[p] より小さい場合は、nums[q] を y[p] で更新し、温度値を 1 減分します。
ステップ 6- ループの外側で、更新された配列の走査を開始し、すべての配列要素の合計を取り出し、それを maxSum 変数に格納します。
ステップ 7- 関数の最後で maxSum を返します。 ###例### リーリー ###出力### リーリー
時間計算量- O(M*NlogN)。O(M) はすべてのクエリの走査に使用され、O(NlogN) は配列の並べ替えに使用されます。
空間複雑度- 配列をソートする場合、空間複雑度は O(N) です。 方法 2
このアプローチでは、優先キューを使用して、配列要素のペアとその出現時間を保存します。 たとえば、{nums[p], 1} ペアを配列要素ごとに優先キューにプッシュします。同時に、ペア {y[p], x[p]} を優先キューにプッシュします。優先キューでは、ペアは最初の要素に基づいて並べ替えられます。したがって、キューから上位 N 個の要素を取得できます。ここで、ペア {y[p],x[p]} について、y[p] 個の要素を x[p] 回取り出すことができ、合計を最大化するには合計 N 個の要素を取り出す必要があります。
###アルゴリズム###ステップ 1 - 「maxSum」を 0 で初期化し、要素のペアとその出現数を保存する優先キューを初期化します。
ステップ 2- すべての配列要素について、{nums[p], 1} ペアをキューに挿入します。
ステップ 3 - 次に、{y[p], x[p]} のペアを優先キューに挿入します。
ステップ 4- n が 0 より大きくなるまで繰り返します。
ステップ 4.1 - 優先キューから最初の要素を削除します。
ステップ 4.2 - first_ele * max(n, Second_ele) を合計に加算します。ここでは、max(n, Second_ele) を使用して最後のケースを処理します。
ステップ 4.3- n から Second_ele を減算します。
ステップ 5- maxSum を返します。
###例### リーリー ###出力### リーリー時間計算量 - O(N*logN m*logm)。ここで、O(N) と O(m) は指定された配列の走査に使用され、O(logN) はキュー内の要素の挿入と削除に使用されます。 スペースの複雑さ - キューにペアを格納するための O(N M)。
最初の方法では、最小の x[p] 要素を見つけるために各反復で配列を並べ替える必要があります。プライオリティ キューを使用すると、ヒープ データ構造が使用されるため、要素が挿入または削除されるときに要素を自動的に並べ替えることができます。したがって、コードのパフォーマンスが向上します。
以上が指定された操作を実行した後に可能な配列の合計の最大値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PyCharm は非常に人気のある Python 統合開発環境 (IDE) であり、Python 開発をより効率的かつ便利にするための豊富な機能とツールを提供します。この記事では、PyCharm の基本的な操作方法を紹介し、読者がすぐに使い始めてツールの操作に習熟できるように、具体的なコード例を示します。 1. PyCharm をダウンロードしてインストールします。 まず、PyCharm 公式 Web サイト (https://www.jetbrains.com/pyc) にアクセスする必要があります。

sudo (スーパーユーザー実行) は、一般ユーザーが root 権限で特定のコマンドを実行できるようにする、Linux および Unix システムの重要なコマンドです。 sudo の機能は主に次の側面に反映されています。 権限制御の提供: sudo は、ユーザーにスーパーユーザー権限を一時的に取得することを許可することで、システム リソースと機密性の高い操作を厳密に制御します。一般のユーザーは、必要な場合にのみ sudo を介して一時的な権限を取得できるため、常にスーパーユーザーとしてログインする必要はありません。セキュリティの向上: sudo を使用すると、日常的な操作中に root アカウントの使用を回避できます。すべての操作に root アカウントを使用すると、誤った操作や不注意な操作には完全な権限が与えられるため、予期しないシステムの損傷につながる可能性があります。そして

LinuxDeploy の操作手順と注意事項 LinuxDeploy は、ユーザーが Android デバイスにさまざまな Linux ディストリビューションを迅速に展開できるようにする強力なツールで、ユーザーはモバイル デバイスで完全な Linux システムを体験できます。この記事では、LinuxDeploy の操作手順と注意事項を詳しく紹介し、読者がこのツールをより効果的に使用できるように、具体的なコード例を示します。操作手順: Linux のインストールDeploy: まず、インストールします

おそらく多くのユーザーは、自宅に未使用のコンピュータを複数台持っており、長期間使用していなかったためにパワーオン パスワードを完全に忘れてしまったため、パスワードを忘れた場合の対処方法を知りたいと考えています。それでは、一緒に見てみましょう。 win10 起動パスワードの F2 キーを押し忘れた場合の対処方法 1. コンピューターの電源ボタンを押し、コンピューターの電源を入れるときに F2 キーを押します (コンピューターのブランドによって、BIOS に入るボタンが異なります)。 2. BIOS インターフェイスで、セキュリティ オプションを見つけます (コンピューターのブランドによって場所が異なる場合があります)。通常は上部の設定メニューにあります。 3. 次に、「SupervisorPassword」オプションを見つけてクリックします。 4. この時点で、ユーザーは自分のパスワードを確認できると同時に、その横にある [有効] を見つけて [無効] に切り替えることができます。

Apple は、iPhone 15 Pro と 15 Pro Max に Pro 専用のハードウェア機能をいくつか導入し、みんなの注目を集めました。チタン フレーム、洗練されたデザイン、新しい A17 Pro チップセット、エキサイティングな 5 倍望遠レンズなどについて話します。 iPhone 15 Proモデルに追加されたすべての付加機能の中で、アクションボタンは依然として際立って目立つ機能です。言うまでもなく、iPhone でアクションを起動するのに便利な機能です。ただし、誤ってアクション ボタンを押したままにして、誤って機能をトリガーしてしまう可能性があります。率直に言って、面倒です。これを回避するには、iPhone 15 Pro および 15 Pro Max のアクションボタンを無効にする必要があります。させて

スマートフォンの普及に伴い、スクリーンショット機能は携帯電話を日常的に使用する上で必須のスキルの 1 つになりました。 Huaweiの主力携帯電話の1つであるHuawei Mate60Proのスクリーンショット機能は、当然のことながらユーザーの注目を集めています。今日は、誰もがより便利にスクリーンショットを撮れるように、Huawei Mate60Pro携帯電話のスクリーンショットの操作手順を共有します。まず、Huawei Mate60Pro携帯電話はさまざまなスクリーンショット方法を提供しており、個人の習慣に応じて自分に合った方法を選択できます。以下は、一般的に使用されるいくつかのインターセプトの詳細な紹介です。

Apple の iPhone 15 Pro および iPhone 15 Pro Max では、音量ボタンの上にある従来の着信音/サイレント スイッチに代わる、新しいプログラム可能なアクション ボタンが導入されています。 [アクション] ボタンの機能とカスタマイズ方法については、以下をお読みください。 Apple iPhone 15 Pro モデルの新しいアクション ボタンは、着信音とサイレントを有効にする従来の iPhone スイッチを置き換えます。デフォルトでは、新しいボタンを長押しすると両方の機能が有効になりますが、長押しすると、カメラやフラッシュライトへのクイック アクセス、ボイスメモの有効化、フォーカス モード、翻訳、その他のさまざまな機能を実行することもできます。拡大鏡などのアクセシビリティ機能。単一のショートカットに関連付けることもでき、他の可能性がたくさん広がります。

CSS Web ページのスクロール監視: Web ページのスクロール イベントを監視し、対応する操作を実行します。フロントエンド テクノロジの継続的な開発により、Web ページの効果とインタラクションはますます豊かかつ多様になってきています。その中でも、スクロールモニタリングは、ユーザーがWebページをスクロールするときに、スクロール位置に基づいて何らかの特殊効果や操作を実行できる一般的な技術です。一般に、スクロール監視は JavaScript を通じて実装できます。ただし、場合によっては、純粋な CSS を通じてスクロール監視の効果を実現することもできます。この記事では、CSSを使用してWebページのスクロールを実装する方法を紹介します。
