Включить индекс массива при перемещении массива для удаления дубликатов C

#arrays #c

Вопрос:

Мне дается массив случайно сгенерированных значений, и я должен удалить дубликаты, сдвинув их вниз и заменив повторяющееся значение на 0 в конце массива. Как только я нахожу дубликат индекса, я начинаю оттуда и сдвигаю элементы массива вниз, однако это приводит к пропуску этого первого индекса. Я также не уверен, как включить «соответствующий» индекс.

 int k, i = 0, j;
while (i < size){
    j= i 1;
    while (j < size){
        if (array[i] == array[j]) {
            
            for (k = j; k < size-1; k  ) {
                array[k] = array[k 1];
            }
            array[k] = 0;
        }
          j;
    }
      i;
}
 

Комментарии:

1. Альтернативный подход к алгоритму заключается в выполнении memmove операции над оставшейся частью массива, а затем в установке последнего элемента в 0.

Ответ №1:

Не увеличивайте j , когда найдете совпадение, чтобы вы могли проверить его снова после переключения.

 int k, i = 0, j;
for (i = 0; i < size; i  ) {
    j= i 1;
    while (j < size){
        if (array[i] == array[j]) {
            for (k = j; k < size-1; k  ) {
                array[k] = array[k 1];
            }
            array[k] = 0;
        } else {
              j;
        }
    }
}