0Pricing
Competitive Programming Academy · Aula

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 Competitive Programming Academy 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 Competitive Programming Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Competitive Programming Academy 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 = 1

O 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]:
        continue

Algo 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 + 1

Ignore 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 0

Uma 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 Competitive Programming Academy, atualize para CoddyKit PRO. O curso de Competitive Programming Academy 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 Competitive Programming Academy 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 Competitive Programming Academy?

Nenhuma experiência prévia é necessária. Competitive Programming Academy 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 Competitive Programming Academy?

Sim. Cada aula de Competitive Programming Academy 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

  1. Dois Ponteiros em um Array Ordenado
  2. Encontre um Par com uma Soma Determinada
  3. Remova Duplicatas no Próprio Array
  4. Mescle Duas Sequências Ordenadas
← Voltar para Competitive Programming Academy