Arrays.sort() でソートされた Java 配列で重複するセグメントを見つけようとしています。同じ int が配列内で重複するセグメントを形成することを期待しています。たとえば、並べ替え後の配列は {1, 2, 3, 3, 3, 3, 5, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9} です。
重複するセグメントを見つけるために、次のアイデアを実装したいと考えています。2 つのポインター (i と j) で while ループを使用したいと考えています。
1.) i をインデックス 0 から開始し、j を最後のインデックス (N-1) から開始します。2.) j-- を実行している間、i をインデックス 0 のままにします。j が i の次のインデックスに到達し、セグメントが見つからない場合、i を 1 ずつインクリメントし、j をインデックス N-1 に再初期化します 3.) 手順 1 と 2 を繰り返します。 j をインデックス N-1 にします。4.) i==j の場合、while ループを終了します。
以下は私の試みですが、私の実行からではありません。
int[] test = new int[] {1, 2, 3, 3, 3, 3, 5, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9};
int i = 0;
int j = test.length - 1;
int[] copySegment;
while (j > i)
{
if (test[j] == test[i])
{
int segmentLength = j - i + 1;
copySegment = new int[segmentLength];
for (int k = j; k >= i; k--)
{
copySegment[segmentLength--] = test[k];
}
for (int e : copySegment)
{
System.out.print(e + " ");
}
}
j--;
i++;
}