Os problemas que estou usando pra praticar, por técnica.
- [ ] = tem o arquivo pronto pra resolver (enunciado + testes), mas ainda não resolvi. É só abrir e implementar a função.
- [x] = já resolvi (o gabarito fica em
<categoria>/solutions/).
Pra rodar: python <categoria>/<problema>.py — se passar, aparece
"todos os testes passaram".
Fonte: LeetCode.
- Two Sum — dois índices que somam o alvo (easy)
- Maximum Subarray — maior soma contígua, Kadane (medium)
- Valid Palindrome — palíndromo ignorando pontuação/caixa (easy)
- Longest Substring Without Repeating — maior substring sem repetir (medium)
- Group Anagrams — agrupar anagramas (medium)
- Top K Frequent Elements — os k mais frequentes (medium)
- Container With Most Water — maior área entre duas linhas (medium)
- Maximum Average Subarray I — maior média em janela de tamanho k (easy)
- Binary Search — busca clássica em array ordenado (easy)
- Search in Rotated Sorted Array — buscar após rotação (medium)
- Climbing Stairs — formas de subir n degraus (easy)
- House Robber — soma máxima de não-adjacentes (medium)
- Coin Change — menos moedas pra formar o valor (medium)
- Number of Islands — contar componentes conexos numa grade (medium)
- Valid Parentheses — parênteses balanceados com pilha (easy)
- Merge Intervals — juntar intervalos sobrepostos (medium)
Técnicas pra cobrir depois: linked-lists, trees, heaps, greedy,
backtracking, recursion, bit-manipulation, math, sql. Vou trazendo
problemas pra cá conforme pegar cada uma.