0Pricing
Competitive Programming Academy · Aula

Dois Ponteiros em um Array Ordenado

Mova as extremidades para dentro até encontrar o alvo.

Dois Ponteiros em um Array Ordenado é uma aula grátis de Competitive Programming Academy no CoddyKit. Esta é a aula 1 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.

Por Que Usar Dois Ponteiros

A técnica de dois ponteiros percorre um vetor com dois índices em vez de usar laços aninhados, transformando muitas ideias O(n^2) em uma única passagem organizada O(n). 🎯

Ordenado é a Palavra Mágica

A versão clássica precisa de um vetor ordenado. A ordem permite raciocinar: mover-se para a direita aumenta o valor, e mover-se para a esquerda o diminui, portanto cada etapa é uma decisão concreta.

Dois Ponteiros nas Extremidades

Comece um ponteiro na extremidade esquerda e outro na extremidade direita. Eles ficam voltados um para o outro e aos poucos fecharão o intervalo entre si.

left = 0
right = len(a) - 1

Mover as Extremidades para Dentro

A cada etapa, você move exatamente um ponteiro para dentro. A ordem do vetor indica qual lado deve ser ajustado para você se aproximar do objetivo.

A Condição do Laço

Continue no laço enquanto left < right. Quando eles se encontrarem ou se cruzarem, todos os pares úteis terão sido verificados, e você poderá parar.

while left < right:
    # inspect a[left] and a[right]
    pass

Ler a Soma Atual

Considere a[left] + a[right] como o candidato atual. Compará-lo com um alvo indica se o próximo valor precisa ser maior ou menor.

total = a[left] + a[right]

Pequeno Demais: Mova o Ponteiro Esquerdo

Se a soma estiver abaixo do alvo, você precisará de mais. Mova o ponteiro esquerdo para a direita, em direção a valores maiores, pois o vetor está ordenado em ordem crescente.

if total < target:
    left += 1

Grande Demais: Mova o Ponteiro Direito

Se a soma estiver acima do alvo, você precisará de menos. Mova o ponteiro direito para a esquerda, em direção a valores menores, para reduzir o total.

elif total > target:
    right -= 1

Cada Etapa Descarta Trabalho

Cada movimento elimina todo um conjunto de pares que você nunca precisará testar. É por isso que a varredura é linear, e não quadrática.

Por Que Continua Correto

Você só descarta pares que não podem corresponder ao alvo, portanto a resposta correta nunca é ignorada. É essa segurança que torna os dois ponteiros confiáveis em competições.

Além das Extremidades

A mesma ideia permite criar variações: inverter no próprio vetor, particionar e intercalar. Quando você domina os ponteiros que se encontram, todas elas se tornam familiares.

Verificação Rápida

Você está percorrendo um vetor ordenado pelas duas extremidades em busca de uma soma-alvo.

Recapitulação

Dois ponteiros percorrem um vetor ordenado pelas duas extremidades, movendo um deles para dentro a cada etapa enquanto left < right. Linear, correto e básico para muitos truques. 🚀

Perguntas Frequentes

A aula “Dois Ponteiros em um Array Ordenado” é grátis?

Sim — o texto completo de “Dois Ponteiros em um Array Ordenado” é 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 “Dois Ponteiros em um Array Ordenado”?

Mova as extremidades para dentro até encontrar o alvo. 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 1 de 4.

Quanto tempo leva a aula “Dois Ponteiros em um Array Ordenado”?

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