1574年。配列をソートするために削除される最短のサブ配列
難易度: 中
トピック: 配列、2 ポインター、二分探索、スタック、単調スタック
整数配列 arr が与えられた場合、arr 内の残りの要素が 非減少になるように、arr から部分配列 (空でもよい) を削除します。
削除する最短の部分配列の長さを返します。
サブ配列は、配列の連続したサブシーケンスです。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
並べ替えと二分探索手法を使用できます。計画は次のとおりです:
2 つの指針がアプローチします:
単調スタック:
手順:
最適化:
このソリューションを PHP で実装してみましょう: 1574。配列をソートするために削除される最短のサブ配列
<?php /** * @param Integer[] $arr * @return Integer */ function shortestSubarrayToRemove($arr) { ... ... ... /** * go to ./solution.php */ } // Test cases echo shortestSubarrayToRemove([1, 2, 3, 10, 4, 2, 3, 5]) . "\n"; // Output: 3 echo shortestSubarrayToRemove([5, 4, 3, 2, 1]) . "\n"; // Output: 4 echo shortestSubarrayToRemove([1, 2, 3]) . "\n"; // Output: 0 ?>
最長の減少しないプレフィックスとサフィックス:
初期最小削除:
プレフィックスとサフィックスのマージ:
結果を返す:
このソリューションは、2 ポインター手法を使用して配列をソートするために削除する最短の部分配列を効率的に見つけ、10^5 要素の制約までの大きな配列を処理します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が配列をソートするために削除される最短のサブ配列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。