我试图在由 Arrays.sort() 排序的 Java 数组中查找重复的段。我期望相同的整数在数组中形成重复的段。例如排序后的数组为:{1, 2, 3, 3, 3, 3, 5, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9}
我想实现我的以下想法来查找重复的段:我想使用带有两个指针(i 和 j)的 while 循环。
1.) 让 i 从索引 0 开始,让 j 开始最后一个索引 (N-1)。2.) 在执行 j-- 时将 i 保持在索引 0 处。当 j 到达 i 的下一个索引并且没有找到段时,将 i 递增 1,并将 j 重新初始化为索引 N-1 3.) 重复步骤 1 和 2。如果找到了段,则将 i 递增到 j 的当前索引,并重新初始化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++;
}