Uma coleção abrangente de soluções de problemas do LeetCode implementadas em Go. Cada solução é desenvolvida com:
- Código limpo e eficiente otimizado para complexidade de tempo e espaço
- Suítes de testes abrangentes com cobertura extensiva de casos extremos
- Explicações detalhadas de algoritmos e abordagens
- Testes de benchmark demonstrando características de performance
Nota: Este repositório foca em compreender algoritmos fundamentais e escrever código com qualidade de produção, não apenas passar nos casos de teste.
| Dificuldade | Quantidade | Percentual |
|---|---|---|
| 🟢 Fácil | 15+ | ~40% |
| 🟡 Médio | 15+ | ~40% |
| 🔴 Difícil | 6+ | ~20% |
leetcode/
└── golang/
├── 1/ # Two Sum
├── 13/ # Roman to Integer
├── 14/ # Longest Common Prefix
└── .../
├── README.md # Descrição do problema e restrições
├── {number}.go # Implementação da solução
├── {number}_test.go # Testes unitários e benchmarks
└── EXPLANATION.md # Explicação detalhada (quando disponível)
Cada solução neste repositório inclui:
- Implementação limpa e legível
- Nomes de variáveis significativos
- Tratamento adequado de erros
- Otimizado para performance
- Testes unitários abrangentes (20-30+ casos de teste por problema)
- Cobertura de casos extremos
- Testes de benchmark com métricas de alocação de memória
- Casos de exemplo da descrição do problema
- README.md: Descrição do problema, exemplos, restrições e abordagens de solução
- EXPLANATION.md: Passo a passo detalhado da solução, análise de complexidade e técnicas de otimização
- Análise de complexidade de tempo e espaço
- Zero ou mínimas alocações de memória quando possível
- Resultados de benchmark demonstrando performance no mundo real
# Navegue para o diretório do problema
cd golang/14
# Execute a solução
go run 14.go
# Execute os testes
go test -v
# Execute os benchmarks
go test -bench=. -benchmem=== RUN TestLongestCommonPrefix
--- PASS: TestLongestCommonPrefix (0.00s)
PASS
BenchmarkLongestCommonPrefix-22 179573352 6.827 ns/op 0 B/op 0 allocs/op
| Problema | Destaques | Performance |
|---|---|---|
| #13 - Roman to Integer | Abordagem limpa baseada em map com otimização early exit | 0 B/op, 0 allocs/op |
| #14 - Longest Common Prefix | Varredura horizontal com zero alocações | 2-23 ns/op, 30 casos de teste |
- Linguagem: Go 1.21+
- Testes: Framework de testes nativo do Go
- Benchmarking: Ferramentas de benchmark nativas do Go
- Controle de Versão: Git & GitHub
Embora este seja um repositório de aprendizado pessoal, sugestões e melhorias são bem-vindas!
- Faça um fork do repositório
- Crie uma branch de feature (
git checkout -b feature/melhoria) - Faça commit das suas mudanças (
git commit -m 'Adiciona melhoria') - Faça push para a branch (
git push origin feature/melhoria) - Abra um Pull Request
- Siga o estilo e estrutura de código existente
- Inclua testes abrangentes
- Adicione explicações para algoritmos complexos
- Certifique-se de que os benchmarks mostram boa performance
Este projeto é open source e está disponível sob a Licença MIT.
Construído com 💻 e ☕️
Boa Codificação! 🚀
