Repositório de soluções de problemas do LeetCode
Resoluções implementadas em múltiplas linguagens focadas em eficiência e clareza de código
Este repositório contém minhas soluções para problemas do LeetCode, uma plataforma de desafios de programação focada em preparação para entrevistas técnicas e aprimoramento de habilidades algorítmicas.
As soluções foram desenvolvidas com foco em:
- ✅ Otimização de complexidade (tempo e espaço)
- ✅ Código limpo e legível
- ✅ Diferentes abordagens para problemas similares
- ✅ Prática de estruturas de dados clássicas
- ✅ Prática com múltiplas linguagens
- Arrays e Strings: Manipulação, busca e transformações
- Hash Tables: Mapeamento e busca eficiente (HashMap)
- Linked Lists: Listas encadeadas e operações
- Stack: Pilha para validação e parsing
- Matrix: Matriz de dados
- Binary Search: Busca binária em arrays ordenados
- Sorting: Ordenação para otimização
- Dynamic Programming: Programação dinâmica
- Backtracking: Busca recursiva com retrocesso
- Two Pointers: Técnica de dois ponteiros
- Divide and Conquer: Dividir para conquistar
- Greedy: Algoritmos gulosos
- Sliding Window: Técnica de janela deslizante
As soluções priorizam:
- ⏱️ Complexidade de Tempo otimizada
- 💾 Complexidade de Espaço eficiente
- 🎯 Trade-offs entre tempo e espaço
O repositório utiliza múltiplas linguagens de programação:
| Linguagem | Uso Principal |
|---|---|
| C++ | STL, templates e alta performance |
| C# | LINQ, generics e estruturas orientadas a objetos |
| JavaScript | Manipulação de arrays e recursão |
| Kotlin | Data classes e programação funcional |
| Java | Collections framework e HashMap |
| Dart | Null safety e programação moderna |
| Python | Soluções concisas e algoritmos eficientes |
| TypeScript | Type safety e interfaces |
| PHP | Manipulação de arrays nativos |
| C | Ponteiros e alocação de memória |
- Early Termination: Interrupção de loops quando resultado é impossível
- Space-Time Tradeoff: Uso de estruturas auxiliares para reduzir complexidade temporal
- In-Place Algorithms: Manipulação sem espaço extra
- Divide and Conquer: Redução de complexidade através de divisão de problemas
- Pruning: Corte de ramos impossíveis em algoritmos de backtracking
- Integer Overflow: Verificações para evitar overflow em operações matemáticas
- Edge Cases: Arrays vazios, strings vazias, valores negativos
- Duplicates: Remoção e tratamento de elementos duplicados
- Null Safety: Validações de ponteiros e referências
- 🌐 LeetCode - Plataforma oficial
- ��� LeetCode Patterns - Padrões de problemas
- 💡 NeetCode - Guias e explicações
Este repositório é destinado a fins educacionais e de estudo.
Se este conteúdo foi útil para você, considere dar uma ⭐ no repositório!
Praticando algoritmos e estruturas de dados diariamente 💪