Какие дублированные значения в отсортированном массиве изменили значение

#java #arrays

Вопрос:

Я попытался ответить на вопрос с кодом литкода: Удалить дубликаты из отсортированного массива , когда ввод был 1,1,1,3,5,5,7, мой вывод был 1,3,5,7. Я все сделал правильно и был счастлив. Но из любопытства я хотел посмотреть, как выглядит полный массив теперь, когда я переместил дубликаты в конец массива. Я получил 1,3,5,7,5,5,7 Я ожидал 1,3,5,7,1,1,5

В методе удаления дубликатов

 int n = nums.length;
int result = 0;
for(int i = 0; i < n; i  ) {
    if(i < n - 1 amp;amp; nums[i] == nums[i   1]) {
        continue;
    }
    nums[result  ] = nums[i];
}
return resu<
 

В основном:

 int [] numbers = {1,1,1,3,5,5,7};
int res = rd.removeDuplicates(numbers);
for(int i = 0; i < numbers.length; i  ) {
    System.out.print(numbers[i]);
}
 

Почему изменились значения дубликатов?

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

1. Окружите обе стороны символом amp;amp; в (), чтобы обеспечить правильный приоритет оператора

2. Не вижу, куда вы толкаете дубликаты до конца. Просто «остальная часть» массива остается прежней (5,5,7),

3. Вы копируете уникальные элементы в начало массива, оставляя правую часть массива нетронутой. Почему вы этого ожидаете 1,3,5,7,1,1,5 ?

4. Спасибо Питеру и Айвен, вы оба разумны.

5. Я предлагаю добавить System.out.println(nums) внутри for цикла removeDuplicate . Затем вы можете видеть изменения в массиве на каждом шаге.