正の整数の並べ替えられていない配列が与えられた場合、並べ替えられたときに要素が連続している最長の部分配列の長さを見つけます。O(n) ソリューションを思いつきますか?
例:
{10, 5, 3, 1, 4, 2, 8, 7}、答えは 5 です。
{4, 5, 1, 5, 7, 6, 8, 4, 1}、答えは 5 です。
最初の例では、サブ配列 {5, 3, 1, 4, 2} をソートすると、最長の連続シーケンス 1,2,3,4,5 を形成できます。
2 番目の例では、サブ配列 {5, 7, 6, 8, 4} が結果のサブ配列です。
サブ配列ごとに、(最大 - 最小 + 1) がそのサブ配列の長さと等しいかどうかを確認する方法を考えることができます。真の場合、それは連続したサブ配列です。すべての中で最も長くかかります。しかし、それは O(n^2) であり、重複を処理できません。
誰かがより良い方法を教えてもらえますか?