devterview_$ iniciar simulação

Cenário: maior subarray/substring com uma condição

MédioPlenoPadrões de algoritmo

Pergunta

Problema: a maior substring sem caracteres repetidos. Por que uma janela deslizante resolve em O(n) em vez do O(n²) ou O(n³) da força bruta?

Resposta esperada

Força bruta gera todas as substrings (O(n²)) e checa cada uma (até O(n)), dando O(n³) — ou O(n²) com um set. A janela deslizante mantém dois ponteiros (início e fim) delimitando uma janela válida e um conjunto/mapa dos caracteres nela. Você avança o `fim` incorporando caracteres; quando entra um repetido, avança o `início` removendo caracteres até a janela voltar a ser válida. Cada caractere entra e sai da janela no máximo uma vez → O(n) total, O(k) de espaço (k = alfabeto). Funciona porque a resposta é um intervalo contíguo e a validade é monotônica: encolher pela esquerda só ajuda a restaurar a validade. O padrão cobre 'maior/menor subarray com soma/condição X', substrings com no máximo K distintos, etc.

Por que perguntam isso

Cenário pleno. Sinal de reconhecimento de padrão: 'intervalo contíguo + validade monotônica', e 'cada elemento entra e sai uma vez'.

#sliding-window#dois-ponteiros#strings
publicidade

Relacionadas