私はthisの問題を解決しようとしていますが、正しいアプローチを思いついていません。 問題を解決するための正しい解決策は何ですか?配列をソートするための最小操作数
6
A
答えて
8
O(n log n)(配列をソートすることによって)で実行できる最長の連続した部分シーケンスが見つかるはずです。その後、必要な変更の数はN - longest consecutive increasing subsequence
です。連続することによって、並べ替えられた配列内に順序があることに注意してください。
例えば:
であることに注意1 7 6 2 3 4 5 => 1-2-3必要な移動の 数は4
1 6 3 4 5 2であり、最長の連続増加サブシーケンスであります7 => 1-2または4-5または6-7は、最長連続増加 サブシーケンスである、1-4-5-7が最長増加サブシーケンスであるが、必要な移動の 数は5ない3
なぜこの作品:
ベストアルゴリズムは、項目の場所のいくつか、X
として変更することなく最大のサブシーケンスを呼び出し、あなたが作業中に互いに関連X
項目の位置を変更する文句を言わないので、彼らは増加モードでソートする必要がありますを変更しません。しかし、配列の最初または最後の項目を移動することが許可されているだけなので、X
の項目の間に項目を置くことはできません(X
は操作中に最大の変更されていない部分列です)。したがって、X
アイテム。並べ替えられ、ソートされた形式で連続している必要があります。
必要な変更の数はN- length of X
より小さくすることはできませんが、N-length of X operation
で仕事をするのは難しくありません。
関連する問題
- 1. 配列をソートするためのスワップの最小数を確認する
- 2. 1つの大きなソートされた配列を生成するために、2つの小さなソートされていない配列にマージ操作
- 3. ソートされた配列最大と最小のオブジェクトを選択
- 4. Windowsのファイルを操作するための最小のOS
- 5. 配列の操作(最小限の削除が必要)
- 6. 最適化配列操作
- 7. Cプログラム最小とするための二番目の配列内の最小
- 8. 配列内の整数を最大から最小にソートする。負のintは動作しません
- 9. Java int配列:平均、最小/最大、ソートを検索
- 10. 循環ソート配列の最小要素を見つける
- 11. 上三角行列と下三角行列の最小値を計算するための行列操作
- 12. 乱数配列を操作する
- 13. Numpy:最小の操作数でこのアレイを作り直す
- 14. 配列を作成するためのAjaxと文字列操作
- 15. Statsmodelを使用した複数のOLS回帰ValueError:IDなしのゼロサイズ配列から最大の縮小操作
- 16. 最小配列で一意の配列を作る
- 17. "n"個のアイテムをソートするための操作を行う回数
- 18. PHPのソート配列と小さな値をプッシュし、最後
- 19. CoreData:ソート操作の最大行数ですか?
- 20. ソートされた浮動小数点数の最小の差を見つける
- 21. 配列の操作
- 22. 既にソートされた配列の時間複雑度が最小のソートアルゴリズム?
- 23. 文字列ソートの最小文字
- 24. 関数内の操作配列 - c - セグメンテーションフォールト
- 25. ターゲット番号に到達するために必要な最小操作数をカウントする
- 26. 2つの配列の最小の差を求める
- 27. 同じ配列の複数のインデックスを使用した配列操作
- 28. 配列をソートし、ビジュアルスタジオのインラインアセンブリで最小の番号を印刷します
- 29. VBA配列操作
- 30. 共通のキーをフィルタリングするためのPHPの単純な配列操作
"最長連続増加サブシーケンス"とは、並べ替えられていないシーケンスの中で最も長い共通サブシーケンスを意味しますか? – dasblinkenlight
@ dasblinkenlightあなたが言及したことは、最も長くなる部分シーケンスが増えているのではなく、私の英語は十分ではなく、それをうまく説明する方法がわからないので、サンプルで説明しようとしました。例えば、 '1 6 4 3 5 2 7 「私が言ったことは「1,2」ですが、最も長く続く部分列は「1,4,5,7」です。明確でない場合は、それを説明するように教えてください。あなたが私の答えを自由に編集できることを理解すればそれを明確にする。 –