2779。操作適用後の配列の最大の美しさ
難易度: 中
トピック: 配列、二分探索、スライディング ウィンドウ、並べ替え
0 インデックス付き 配列 nums と、非負 整数 k が与えられます。
1 回の操作で次のことができます:
- [0, nums.length - 1] の範囲から、以前に選択されていないインデックス i を選択します。
- nums[i] を [nums[i] - k, nums[i] k] の範囲の任意の整数に置き換えます。
配列の美しさは、等しい要素で構成される最長のサブシーケンスの長さです。
操作を何度でも適用した後の配列 nums の最大の美しさを返します。
各インデックスに操作を適用できるのは 1 回だけであることに注意してください。
配列のサブシーケンス は、残りの要素の順序を変更せずに、いくつかの要素 (おそらく何もない) を削除することによって、元の配列から生成された新しい配列です。
例 1:
- 入力: nums = [4,6,1,2]、k = 2
- 出力: 3
- 説明: この例では、次の操作を適用します。
- インデックス 1 を選択し、(範囲 [4,8] から) 4 に置き換えます。数値 = [4,4,1,2]。
- インデックス 3 を選択し、(範囲 [0,4] から) 4 に置き換えます。数値 = [4,4,1,4]。
- 適用された操作後の配列 nums の美しさは 3 (インデックス 0、1、および 3 で構成されるサブシーケンス) です。
- 3 が達成可能な最大長であることが証明できます。
例 2:
- 入力: nums = [1,1,1,1]、k = 10
- 出力: 4
- 説明: この例では、操作を適用する必要はありません。
- 配列 nums の美しさは 4 (配列全体) です。
制約:
- 1 5
0 5
ヒント:
- 配列を並べ替えます。
- 問題は次のようになります: A[j] - A[i] ≤ 2 * k となる最大の部分配列 A[i … j] を見つけます。
解決策:
並べ替えとスライディング ウィンドウのアプローチを利用できます。アプローチ:
- 配列を並べ替えます: 並べ替えにより、最大要素と最小要素の差が 2k を超えないサブシーケンスの識別が簡単になります。
- スライディング ウィンドウ手法: 差 nums[j] - nums[i] のインデックス [i, j] を維持します。 。 i または j を調整してウィンドウ サイズを最大化します。
このソリューションを PHP で実装してみましょう: 2779。操作適用後の配列の最大の美しさ
<?php /** * @param Integer[] $nums * @param Integer $k * @return Integer */ function maximumBeauty($nums, $k) { ... ... ... /** * go to ./solution.php */ } // Example Usage: $nums1 = [4, 6, 1, 2]; $k1 = 2; echo maximumBeauty($nums1, $k1) . "\n"; // Output: 3 $nums2 = [1, 1, 1, 1]; $k2 = 10; echo maximumBeauty($nums2, $k2) . "\n"; // Output: 4 ?>
説明:
-
配列の並べ替え:
- 並べ替えにより、インデックス [i, j] で定義されたウィンドウにすべての要素が昇順で含まれるようになり、最小値と最大値の差を確認しやすくなります。窓。
-
スライディング ウィンドウ:
- 先頭は i と j の両方で始めます。
- 条件 nums[j] - nums[i] > が満たされるたびに、j をインクリメントしてウィンドウを拡張し、i をインクリメントしてウィンドウを有効に保ちます。 2k が違反されています。
- 各ステップで、現在の有効なウィンドウのサイズ j - i 1 を計算し、maxBeauty を更新します。
複雑さの分析:
-
時間計算量:
- 配列のソート: O(n log n).
- スライディング ウィンドウ トラバーサル: O(n).
- 全体: O(n log n).
-
空間の複雑さ:
- O(1)。ソリューションでは追加の変数がいくつかしか使用されないためです。
例:
入力 1:
$nums = [4, 6, 1, 2]; $k = 2; echo maximumBeauty($nums, $k); // Output: 3
入力 2:
$nums = [1, 1, 1, 1]; $k = 10; echo maximumBeauty($nums, $k); // Output: 4
このソリューションは制約を遵守し、大きな入力の結果を効率的に計算します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
- GitHub
以上が操作適用後の配列の美しさを最大限に高めるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)

phpisusededemingemailsduetoitsbuilt-inmail()functionandsupportiveLibrarieslikephpmailerandswiftmailer.1)usethemail()functionforbasicemails、butithaslimitations.2)emploadforadvancedfeatureSlikelikelivableabableabuses.3)雇用

PHPパフォーマンスボトルネックは、次の手順で解決できます。1)パフォーマンス分析にXdebugまたはBlackfireを使用して問題を見つける。 2)データベースクエリを最適化し、APCUなどのキャッシュを使用します。 3)array_filterなどの効率的な関数を使用して、配列操作を最適化します。 4)bytecodeキャッシュ用のopcacheを構成します。 5)HTTP要求の削減や写真の最適化など、フロントエンドを最適化します。 6)パフォーマンスを継続的に監視および最適化します。これらの方法により、PHPアプリケーションのパフォーマンスを大幅に改善できます。

依存関係(di)inphpisadesignpatternativats anducesclassodulencies、拡張測定性、テスト可能性、および維持可能性。

cachingemprovesppperformancebystring of computationsorquickretrieval、還元装置の削減は、reducingerloadendenhancersponseTimes.efcectivestrategiesInclude:1)opcodecaching、compiledphpscriptsinmemorytoskipcompilation;


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
