Skip to main content
AI EducademyAIEducademy
🌳

Fundamentos de IA

🌱
AI Seeds

Alfabetização em IA para o mundo real

🌿
AI Sprouts

As bases por trás dos sistemas inteligentes

🌳
AI Branches

Desenvolva com os recursos atuais de IA

🏕️
AI Canopy

Projete sistemas GenAI confiáveis

🌲
AI Forest

Envie produtos de IA com responsabilidade

🔨

Mestria em IA

✏️
AI Sketch

Fundações de engenharia para construtores de IA

🪨
AI Chisel

Padrões para resolver problemas mais difíceis

⚒️
AI Craft

Projete sistemas que dimensionem a IA

💎
AI Polish

Comunique-se e lidere na era da IA

🏆
AI Masterpiece

Seu ponto culminante de IA de produção

🚀

Preparação para Carreira

🚀
Plataforma de Lançamento de Entrevistas

Navegue no mercado de trabalho de engenharia de IA

🌟
Domínio Comportamental

Conte a história de como você cria impacto

💻
Entrevistas Técnicas

Resolva, projete e comunique-se sob pressão

🤖
Entrevistas de IA e ML

Prepare-se para entrevistas modernas com ML e GenAI

🏆
Oferta e Além

Dê o próximo passo confiante e informado

Ver Todos os Programas→

Laboratório

7 experimentos carregados
🧠Playground de Rede Neural🤖IA ou Humano?💬Laboratório de Prompts🎨Gerador de Imagens😊Analisador de Sentimento💡Construtor de Chatbots⚖️Simulador de Ética
🎯Entrevista simuladaEntrar no Laboratório→
JornadaBlogue
🎯
Sobre

Tornar a educação em IA acessível para todos, em todo lugar

❓
Perguntas frequentes

Perguntas frequentes respondidas

🧰
Ferramentas de IA

Ferramentas selecionadas que usamos e recomendamos

✉️
Contato

Entre em contacto connosco

⭐
Codigo aberto

Construído de forma aberta no GitHub

Preços
Começar
AI EducademyAIEducademy

© 2026 AI Educademy. Todos os direitos reservados.

Aprender

  • Programas
  • Aulas
  • Laboratório
  • Kit inicial de IA
  • Preços

Comunidade

  • GitHub
  • Contribuir
  • Código de Conduta
  • Sobre
  • Perguntas Frequentes

Suporte

  • Me Pague um Café ☕
  • Termos de Serviço
  • Política de Privacidade
  • Contato
  • Sitemap
Programas de IA e Engenharia›🪨 AI Chisel›Aulas›Dois ponteiros e uma janela deslizante - como a IA verifica os dados com eficiência
👆
AI Chisel • Intermediário⏱️ 15 min de leitura

Dois ponteiros e uma janela deslizante - como a IA verifica os dados com eficiência

🤖

Esta lição foi traduzida automaticamente para português e ainda não foi revisada por uma pessoa. Se algo parecer estranho, a versão em inglês é a definitiva.

Por que a digitalização inteligente é importante

Imagine uma IA monitorando um feed de vídeo ao vivo em busca de atividades suspeitas. Ele não pode assistir novamente a gravação inteira a cada segundo - ele precisa deslizar uma janela de atenção pelo stream, acompanhando apenas o contexto suficiente. Isso é exatamente o que os padrões de dois ponteiros e de janela deslizante fazem para dados sequenciais.

Ambas as técnicas transformam varreduras O(n²) de força bruta em passagens O(n) elegantes.

Dois ponteiros convergindo de ambas as extremidades de uma matriz e uma janela deslizante movendo-se através de um fluxo de dados
Dois ponteiros reduzem o espaço de pesquisa; uma janela deslizante mantém uma visão em execução.

A técnica dos dois ponteiros

Coloque duas referências em uma sequência e mova-as de acordo com uma regra. Existem dois sabores principais.

Ponteiros convergentes

Comece um ponteiro em cada extremidade e mova-os para dentro. Perfeito para dados classificados.

Problema clássico - Soma de pares: Dada uma matriz ordenada, encontre dois números que somam um destino.

function pairSum(arr, target):
    left = 0
    right = arr.length - 1
    while left < right:
        sum = arr[left] + arr[right]
        if sum == target: return (left, right)
        if sum < target: left += 1
        else: right -= 1
    return null

Como a matriz está classificada, mover left para a direita aumenta a soma e mover right para a esquerda a diminui - garantindo que nunca perderemos um par válido.

Ponteiros na mesma direção

Ambos os ponteiros avançam, mas em velocidades diferentes. Útil para particionamento ou detecção de ciclo.

Exemplo - Remover duplicatas no local: Um ponteiro lento marca a posição de gravação; um ponteiro rápido avança.

function removeDuplicates(arr):
    slow = 0
    for fast in 1..arr.length - 1:
        if arr[fast] != arr[slow]:
            slow += 1
            arr[slow] = arr[fast]
    return slow + 1
🧠Verificação Rápida

Na técnica convergente de dois ponteiros em uma matriz classificada, o que você deve fazer quando a soma atual é menor que o alvo?

Lição 1 de 100% concluído
←Voltar ao programa
Continuar: Árvores e pesquisa binária – como a IA toma decisões rápidas→

Discussão

Inicie sessão para participar na discussão

Sugerir uma edição nesta lição

O padrão de janela deslizante

Uma janela deslizante mantém uma subsequência contígua de tamanho k (fixo) ou comprimento variável, atualizando agregados de forma incremental em vez de recalcular do zero.

Janela de tamanho fixo

Deslize uma janela com exatamente k elementos na matriz.

Exemplo - Soma máxima de quaisquer k elementos consecutivos:

function maxSubarraySum(arr, k):
    windowSum = sum(arr[0..k-1])
    best = windowSum
    for i in k..arr.length - 1:
        windowSum += arr[i] - arr[i - k]
        best = max(best, windowSum)
    return best

Cada etapa adiciona o novo elemento que entra na janela e subtrai o que sai - O(1) por movimento.

Janela de tamanho variável

Expanda a janela para incluir mais dados e reduza-a quando uma restrição for violada.

Exemplo - Substring mais longa sem caracteres repetidos:

function longestUnique(s):
    seen = {}
    left = 0
    best = 0
    for right in 0..s.length - 1:
        if s[right] in seen and seen[s[right]] >= left:
            left = seen[s[right]] + 1
        seen[s[right]] = right
        best = max(best, right - left + 1)
    return best
🤯
Plataformas de análise de streaming como Apache Flink usam janelas deslizantes e giratórias como primitivas de primeira classe - o mesmo conceito dimensionado para milhões de eventos por segundo.

Aplicativos reais de IA

| Padrão | Caso de uso de IA | |--------|------------| | Janela fixa | Detecção de anomalias nas últimas leituras do sensor k | | Janela variável | Encontrar o intervalo de texto mais curto contendo todas as palavras-chave de consulta (mecanismos de pesquisa) | | Ponteiros convergentes | Verificações eficientes do vizinho mais próximo em dimensões de incorporação classificadas | | Ponteiros na mesma direção | Mesclando listas de resultados classificadas de vários modelos de recuperação |

🤔
Think about it:Um assistente de voz armazena em buffer os últimos 3 segundos de áudio para detectar uma palavra de ativação. Qual padrão é esse – janela fixa ou janela variável? O que acontece se a palavra de ativação for maior que o buffer?

Quando usar qual

  • Dois ponteiros (convergentes): entrada classificada, pesquisa de pares/trigêmeos, verificações de palíndromo.
  • Dois ponteiros (mesma direção): modificações no local, problemas de corredor rápido/lento.
  • Janela deslizante fixa: agregação em um tamanho de janela conhecido.
  • Janela deslizante variável: encontre a menor ou maior janela que satisfaça uma condição.
🧠Verificação Rápida

Qual padrão você escolheria para encontrar o menor subarranjo cuja soma excede um determinado valor?

🤔
Think about it:Você poderia combinar dois ponteiros com uma janela deslizante? Pense em problemas em que você precisa encontrar um par dentro de uma janela contínua de dados - por exemplo, detectando transações duplicadas em uma janela de cinco minutos.

Principais conclusões

  1. Dois ponteiros eliminam loops aninhados aproveitando a ordenação ou o particionamento.
  2. As janelas deslizantes mantêm o estado de execução para que cada elemento seja processado no máximo duas vezes.
  3. Ambos os padrões são fundamentais em pipelines de IA em tempo real – desde a detecção de anomalias até a classificação de pesquisa.
🧠Verificação Rápida

Qual é a complexidade de tempo típica alcançada pela conversão de um loop aninhado de força bruta em uma solução de dois ponteiros ou de janela deslizante?