2593。すべての要素をマークした後の配列のスコアを検索
難易度: 中
トピック: ヒープ (優先キュー)、ソート、配列、シミュレーション、ハッシュ テーブル、順序付きセット、順序付きマップ、貪欲、単調スタック、スライディング ウィンドウ、2 つのポインター、スタック、キュー、ビット操作、分割統治、動的プログラミング、二重リンクリスト、データストリーム、基数ソート、バックトラッキング、ビットマスク、ツリー、デザイン、ハッシュ関数、文字列、イテレータ、カウンティングソート、リンクリスト
正の整数で構成される配列 nums が与えられます。
スコア = 0 から始めて、次のアルゴリズムを適用します:
- マークされていない配列の最小の整数を選択します。同点の場合は、インデックスが最も小さいものを選択します。
- 選択した整数値をスコアに加算します。
- 選択した要素と、存在する場合はその 2 つの隣接要素を マークします。
- すべての配列要素がマークされるまで繰り返します。
上記のアルゴリズムを適用した後に得られるスコアを返します。
例 1:
- 入力: 数値 = [2,1,3,4,5,2]
- 出力: 7
-
説明: 要素を次のようにマークします。
- 1 はマークされていない最小の要素なので、これとその 2 つの隣接する要素 [2,1,3,4,5,2] をマークします。
- 2 はマークされていない最小の要素であるため、これとその左に隣接する要素 [2,1,3,4,5,2] をマークします。
- 4 はマークされていない要素として残っている唯一のものなので、[2,1,3,4,5,2] とマークします。
- 私たちのスコアは 1 2 4 = 7 です。
例 2:
- 入力: 数値 = [2,3,5,1,3,2]
- 出力: 5
-
説明: 要素を次のようにマークします。
- 1 はマークされていない最小の要素なので、これとその 2 つの隣接する要素 [2,3,5,1,3,2] をマークします。
- 2 はマークされていない最小の要素です。要素が 2 つあるため、一番左の要素を選択し、インデックス 0 の要素とその右隣の要素にマークを付けます: [2,3,5,1,3, 2].
- 2 は残りのマークされていない唯一の要素なので、[2,3,5,1,3,2] とマークします。
- 私たちのスコアは 1 2 2 = 5 です。
制約:
- 1 5
- 1 6
ヒント:
- 要素とその隣接要素をマークするプロセスをシミュレートしてみてください。
- すでにマークされている要素がある場合は、それをスキップします。
解決策:
ソートされた配列または優先キューを使用して、マークされていない最小の要素を追跡することで、マーキング プロセスを効率的にシミュレートできます。したがって、次のアプローチを使用できます:
プラン:
- 入力解析: 配列 nums を読み取り、スコアと採点ステータスの変数を初期化します。
-
ヒープ (優先キュー):
- min-heap を使用して、各ステップでマークされていない最小の要素を効率的に抽出します。
- 各要素をそのインデックス (値、インデックス) とともにヒープに挿入し、最小のインデックスに基づいて関係を管理します。
-
要素のマーキング:
- マークされた配列を維持して、要素とその隣接する要素がマークされているかどうかを追跡します。
- ヒープから要素を処理するとき、すでにマークされている場合はスキップします。
- 現在の要素とその 2 つの隣接する要素 (存在する場合) をマークします。
- 現在の要素の値をスコアに追加します。
- 繰り返し: すべての要素がマークされるまで続けます。
- 出力: 蓄積されたスコアを返します。
このソリューションを PHP で実装してみましょう: 2593。すべての要素をマークした後の配列のスコアを検索
<?php /** * @param Integer[] $nums * @return Integer */ function findScore($nums) { ... ... ... /** * go to ./solution.php */ } // Example usage: $nums1 = [2, 1, 3, 4, 5, 2]; $nums2 = [2, 3, 5, 1, 3, 2]; echo findScore($nums1) . "\n"; // Output: 7 echo findScore($nums2) . "\n"; // Output: 5 ?>
説明:
-
ヒープ構築:
- usort 関数は、値に基づいて配列を並べ替えます。また、値が同じ場合はインデックスによって並べ替えます。
- これにより、常に最小のインデックスを持つ最小のマークされていない要素が処理されます。
-
マーキングロジック:
- マークされていない各要素について、マークされた配列を使用してその要素とその隣接する要素をマークします。
- これにより、以前にマークされた要素を効率的にスキップできます。
-
時間計算量:
- ヒープのソート: O(n log n)
- ヒープの処理: O(n)
- 全体: O(n log n)。これは、指定された制約に対して効率的です。
-
空間の複雑さ:
- マークされた配列: O(n)
- ヒープ: O(n)
- 合計: O(n)
このソリューションは制約を満たしており、大規模な入力に対して効率的に機能します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
- GitHub
以上がすべての要素をマークした後の配列のスコアの検索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

絶対セッションのタイムアウトはセッションの作成時に開始され、アイドルセッションタイムアウトはユーザーの操作なしに開始されます。絶対セッションタイムアウトは、金融アプリケーションなど、セッションライフサイクルの厳格な制御が必要なシナリオに適しています。アイドルセッションタイムアウトは、ソーシャルメディアなど、ユーザーが長い間セッションをアクティブに保つことを望んでいるアプリケーションに適しています。

サーバーセッションの障害は、手順に従って解決できます。1。セッションが正しく設定されていることを確認するために、サーバーの構成を確認します。 2.クライアントCookieを確認し、ブラウザがそれをサポートしていることを確認し、正しく送信します。 3. Redisなどのセッションストレージサービスを確認して、それらが正常に動作していることを確認します。 4.アプリケーションコードを確認して、正しいセッションロジックを確認します。これらの手順を通じて、会話の問題を効果的に診断および修復し、ユーザーエクスペリエンスを改善することができます。

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

HTTPonlyフラグを設定することは、XSS攻撃を効果的に防止し、ユーザーセッション情報を保護することができるため、セッションCookieにとって重要です。具体的には、1)HTTPONLYフラグは、JavaScriptがCookieにアクセスするのを防ぎます。2)Flagは、PHPとFlaskのSetCookiesとMake_Responseを介して設定できます。

phpsessionssolvetheprobrof of maintainsea crossmultiplehttprequestsbyStoringdataontaonsociatingitiTauniquesessionid.1)それらは、通常はヨーロッパの側面、および一般的には、測定されている

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









