Sobes.tech
Junior — Middle

Como eliminar elementos duplicados em um array ordenado sem reordenar?

sobes.tech IA

Resposta da IA

Se o array já estiver ordenado, os elementos duplicados estarão juntos. Para remover duplicados sem ordenar novamente, pode percorrer o array uma vez e copiar os elementos únicos para um novo array ou modificar o array original no local, usando dois ponteiros.

Exemplo em Java com modificação no local (para um array de 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; // novo comprimento do array sem duplicados
}

No final, os primeiros uniqueIndex + 1 elementos do array serão únicos. Essa abordagem funciona em O(n) e não requer ordenação adicional.