Назад к вопросам
Junior — Middle
69
Каким образом можно устранить повторяющиеся элементы в отсортированном массиве, не прибегая к повторной сортировке?
Ответ от нейросети
sobes.tech AI
Если массив уже отсортирован, то повторяющиеся элементы будут идти подряд. Чтобы удалить дубликаты без повторной сортировки, можно пройтись по массиву один раз и скопировать уникальные элементы в новый массив или изменить исходный массив на месте, используя два указателя.
Пример на Java с изменением массива на месте (для массива int):
public static int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int uniqueIndex = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[uniqueIndex]) {
uniqueIndex++;
nums[uniqueIndex] = nums[i];
}
}
return uniqueIndex + 1; // новая длина массива без дубликатов
}
В итоге первые uniqueIndex + 1 элементов массива будут уникальными. Такой подход работает за O(n) времени и не требует дополнительной сортировки.