Для этой конкретной проблемы я пытаюсь удалить избыточные элементы в отсортированном массиве и заменить их все на 0 в конце массива. Например, если бы у меня был массив, состоящий из элементов int
1,3,3,4,4,5,6,6,7
Мой выходной массив должен быть
1,3,4,5,6,7,0,0,0
Моя первая попытка решить проблему состояла в том, чтобы создать модуль подкачки, чтобы после удаления элементов сдвинуть все 0 в конец списка, но, похоже, нули не будут сдвигать нули в конец списка. Вот мой код.
public void implode(int[] ary)
{
int swapper = -1;
int[] newARY = new int[ary.length];
int current = -1;
for (int i = 0; i < ary.length; i++)
{
if (current != ary[i])
{
newARY[i] = ary[i];
current = ary[i];
}
}
for (int i = 0; i < ary.length; i++)
{
if (ary[i] == 0)
{
if (ary[i + 1] != 0)
{
swapper = ary[i + 1];
ary[i] = swapper;
ary[i + 1] = 0;
}
}
}
ary = newARY;
for (int i = 0; i < newARY.length; i++)
{
System.out.print(newARY[i] + " ");
}
}
Массив, с которым я тестирую это,
int[] aryIn2 = {1, 1, 2, 3, 4, 4, 5, 6};
Однако при выводе развернутого массива я получаю этот.
1 0 2 3 4 0 5 6
Что-то мне не хватает?
Заранее спасибо.