Каким образом можно устранить повторяющиеся элементы в отсортированном массиве, не прибегая к повторной сортировке?

Если массив уже отсортирован, то повторяющиеся элементы будут идти подряд.

Короткий ответ

Что ответить на собеседовании

Если массив уже отсортирован, то повторяющиеся элементы будут идти подряд. Чтобы удалить дубликаты без повторной сортировки, можно пройтись по массиву один раз и скопировать уникальные элементы в новый массив или изменить исходный массив на месте, используя два указателя.

Подробный разбор

Ответ с пояснениями

Если массив уже отсортирован, то повторяющиеся элементы будут идти подряд. Чтобы удалить дубликаты без повторной сортировки, можно пройтись по массиву один раз и скопировать уникальные элементы в новый массив или изменить исходный массив на месте, используя два указателя.

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее