/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { { int[] a = {1, 2, 2, 2, 5, 6, 5, 8, 8}; int k = 0; // счётчик удаляемых элементов int n = a.length; // размер массива исключая нулевой хвост int i = 0; while (i < n) { int j = 0; while (j < i && a[j] != a[i]) j++; // а не является ли i-ый элемент дублем? if (j < i) { // если является k++; // то увеличить счётчик удаления } else if (k > 0) { // иначе при необходимости i = i - k; // вернуться на k элементов назад n = n - k; // расчитать новый размер for (j = i; j < n; j++) { // сместить элементы a[j] = a[j + k]; } k = 0; // сбросить счётчик удаления } i++; } if (k > 0) { i = i - k; n = n - k; for (int j = i; j < n; j++) { // сместить элементы a[j] = a[j + k]; } } for (i = n; i < a.length; i++) a[i] = 0; // заполнить хвост нулями } }
Standard input is empty
[1, 2, 2, 2, 5, 6, 5, 8, 8] удаление с 2 по 3 вкл. (2шт.) [1, 2, 5, 6, 5, 8, 8, 8, 8] удаление с 4 по 4 вкл. (1шт.) [1, 2, 5, 6, 8, 8, 8, 8, 8] удаление с 5 по 5 вкл. (1шт.) [1, 2, 5, 6, 8, 8, 8, 8, 8] замена на нули с 5 (4шт.) [1, 2, 5, 6, 8, 0, 0, 0, 0]