0Pricing
Coding Interview Prep · Aula

Conte Janelas que Satisfazem uma Regra

Use o truque de no máximo K menos no máximo (K-1).

Conte Janelas que Satisfazem uma Regra é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 4 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.

Contar, não medir

Às vezes é preciso contar subvetores que atendem a uma regra, e não encontrar o mais longo. Um pequeno truque transforma isso em um trabalho simples com janela deslizante. 🔢

O desafio de exatamente K

Contar diretamente subvetores com exatamente K ocorrências de algo é complicado. O limite fica mudando, o que dificulta criar uma única janela simples.

A reformulação como no máximo

Contar subvetores com no máximo K é muito mais fácil com uma única janela. À medida que você expande a direita, cada posição inicial válida fornece um subvetor contado.

O truque da subtração

Exatamente K é igual a atMost(K) menos atMost(K - 1). Duas contagens fáceis se combinam para produzir aquela que você realmente deseja.

answer = at_most(k) - at_most(k - 1)

Crie a função auxiliar

Escreva uma função que conte subvetores com no máximo k elementos. Ela desliza uma janela e a reduz sempre que a contagem ultrapassa k.

def at_most(k):
    left = 0
    total = 0

Reduza quando houver violação

Expanda a direita e atualize a janela. Enquanto ela contiver mais que k elementos, avance a esquerda para trazê-la de volta ao intervalo permitido.

    while count > k:
        # remove a[left]
        left += 1

Adicione a contagem da janela

Depois de corrigir a janela, todo subvetor que termina na direita e começa da esquerda em diante é válido. Adicione direita menos esquerda mais um.

    total += right - left + 1

Por que essa contagem funciona

Para uma direita fixa, os inícios válidos são esquerda, esquerda+1 e assim por diante até direita. Isso corresponde exatamente a right - left + 1 subvetores, todos satisfazendo a condição de no máximo k.

Combine as duas chamadas

Execute a função auxiliar duas vezes e subtraia os resultados. Cada chamada é O(n), portanto a contagem completa de exatamente K continua linear.

return at_most(k) - at_most(k - 1)

Trate o caso extremo

Quando k é zero, atMost(k - 1) usaria menos um. Trate esse caso para que a função auxiliar ainda retorne uma contagem zero coerente.

Onde isso se aplica

A ideia de no máximo menos no máximo se aplica à contagem de subvetores com exatamente K valores distintos, K números ímpares ou qualquer propriedade monotônica por janela.

Verificação rápida

Você quer contar subvetores com exatamente K elementos distintos.

Recapitulação

Contar exatamente K é simplesmente atMost(K) menos atMost(K - 1). Cada função auxiliar desliza uma janela em O(n), portanto a contagem completa continua linear. ✅

Perguntas Frequentes

A aula “Conte Janelas que Satisfazem uma Regra” é grátis?

Sim — o texto completo de “Conte Janelas que Satisfazem uma Regra” é 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 “Conte Janelas que Satisfazem uma Regra”?

Use o truque de no máximo K menos no máximo (K-1). 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 4 de 4.

Quanto tempo leva a aula “Conte Janelas que Satisfazem uma Regra”?

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

  1. Somas em Janelas de Tamanho Fixo
  2. Janela Variável com Dois Ponteiros
  3. Maior Substring sem Repetições
  4. Conte Janelas que Satisfazem uma Regra
← Voltar para Coding Interview Prep