Sobes.tech
Назад к вопросам
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) времени и не требует дополнительной сортировки.