Remova Duplicatas no Próprio Array
Use um par de ponteiros, um lento e um rápido.
Remova Duplicatas no Próprio Array é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.
Remover Duplicatas no Próprio Vetor
Dado um vetor ordenado, mantenha uma cópia de cada valor sem usar outro vetor. Fazer isso no próprio vetor economiza memória e é uma solicitação clássica em entrevistas. 🧹
Por Que a Ordenação Ajuda
Quando o vetor está ordenado, cada duplicata fica imediatamente ao lado de sua cópia. Assim, você só precisa comparar vizinhos, nunca o vetor inteiro.
Duas Funções, Dois Ponteiros
Use um ponteiro lento, que marca o último valor mantido, e um ponteiro rápido, que percorre adiante procurando algo novo.
slow = 0
fast = 1O Ponteiro Lento Escreve
Pense em slow como a posição de escrita: tudo que está nessa posição ou antes dela já foi limpo e não contém duplicatas.
O Ponteiro Rápido Lê
O ponteiro fast apenas lê para a frente. Ele avança rapidamente e só sinaliza slow quando encontra um valor que ainda não foi mantido.
Ignore as Repetições
Se a[fast] for igual a a[slow], trata-se de uma repetição, então não faça nada além de avançar fast. A duplicata é simplesmente ignorada.
for fast in range(1, n):
if a[fast] == a[slow]:
continueAlgo Novo Foi Encontrado
Quando a[fast] for diferente, avance slow e copie o novo valor para essa posição. Isso substitui duplicatas antigas por dados novos e distintos.
else:
slow += 1
a[slow] = a[fast]A Resposta é o Tamanho
Depois da varredura, slow + 1 é a quantidade de valores distintos, todos reunidos no início do vetor.
return slow + 1Ignore o Final
O que estiver depois do prefixo de valores distintos será apenas sobra irrelevante. O problema se importa apenas com os primeiros elementos slow + 1, portanto deixe o final como está.
Tenha Cuidado com o Vetor Vazio
Um vetor vazio tem zero valores distintos. Verifique n == 0 antes de começar para não ler além do final.
if n == 0:
return 0Uma Passagem, Sem Espaço Extra
Esse padrão de ponteiros lento e rápido executa em tempo O(n) e usa O(1) de espaço extra, exatamente o que limites de memória rigorosos exigem.
Verificação Rápida
Você está removendo duplicatas no próprio vetor ordenado com ponteiros lento e rápido.
Recapitulação
Em um vetor ordenado, um par de ponteiros lento e rápido remove duplicatas em uma única passagem O(n), sem espaço extra, retornando slow + 1 como a quantidade de valores distintos. 🎉
Perguntas Frequentes
A aula “Remova Duplicatas no Próprio Array” é grátis?
Sim — o texto completo de “Remova Duplicatas no Próprio Array” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.
O que vou aprender em “Remova Duplicatas no Próprio Array”?
Use um par de ponteiros, um lento e um rápido. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Coding Interview Prep?
Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Remova Duplicatas no Próprio Array”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Coding Interview Prep?
Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Dois Ponteiros em um Array Ordenado
- Encontre um Par com uma Soma Determinada
- Remova Duplicatas no Próprio Array
- Mescle Duas Sequências Ordenadas