fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. int[] a = {1, 2, 2, 2, 5, 6, 5, 8, 8};
  13.  
  14. System.out.println(Arrays.toString(a)); // посмотреть оригинальный массив
  15.  
  16. int k = 0; // счётчик удаляемых элементов
  17. int n = a.length; // размер массива исключая нулевой хвост
  18. int i = 0;
  19. while (i < n) {
  20. int j = 0;
  21. while (j < i && a[j] != a[i]) j++; // а не является ли i-ый элемент дублем?
  22. if (j < i) { // если является
  23. k++; // то увеличить счётчик удаления
  24. } else if (k > 0) { // иначе при необходимости
  25. i = i - k; // вернуться на k элементов назад
  26. n = n - k; // расчитать новый размер
  27. System.out.println("удаление с " + i + " по " + (i + k - 1) + " вкл. (" + k +"шт.)");
  28. for (j = i; j < n; j++) { // сместить элементы
  29. a[j] = a[j + k];
  30. }
  31. k = 0; // сбросить счётчик удаления
  32. System.out.println(Arrays.toString(a)); // посмотреть промежуточный итог
  33. }
  34. i++;
  35. }
  36.  
  37. if (k > 0) {
  38. i = i - k;
  39. n = n - k;
  40. System.out.println("удаление с " + i + " по " + (i + k - 1) + " вкл. (" + k +"шт.)");
  41. for (int j = i; j < n; j++) { // сместить элементы
  42. a[j] = a[j + k];
  43. }
  44. System.out.println(Arrays.toString(a)); // посмотреть промежуточный итог
  45. }
  46.  
  47. System.out.println("замена на нули с " + n + " (" + (a.length - n) +"шт.)");
  48. for (i = n; i < a.length; i++) a[i] = 0; // заполнить хвост нулями
  49.  
  50. System.out.println(Arrays.toString(a)); // посмотреть что получилось
  51.  
  52. }
  53. }
Success #stdin #stdout 0.06s 2841600KB
stdin
Standard input is empty
stdout
[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]