Sobre o projeto
Coding Problems é um repositório voltado ao aprendizado que reúne soluções em Python 3 para problemas de algoritmos e estilo entrevista de codificação, juntamente com um conjunto selecionado de recursos de estudo. O README afirma claramente que o material é destinado a aprendizado e pesquisa, não para uso em produção.
Soluções
Todas as soluções são escritas em Python 3 e dependem apenas de funções embutidas e de alguns módulos da biblioteca padrão (math, collections, heapq, random), portanto nenhum pacote externo é necessário para executá-las. O autor escolheu Python porque ele se lê próximo a pseudocódigo, facilitando a portabilidade da lógica para outras linguagens. O estilo do código segue o PEP8.
Cada arquivo de solução usa um modelo consistente: um docstring com o nome do problema, explicação, descrição de entrada/saída e uma ou mais abordagens de solução com complexidade de tempo e espaço; depois as funções de solução; e então uma seção de teste simples que imprime resultados com print() em vez de um framework de testes unitários (o README observa unittest ou pytest como alternativas melhores para testes reais).
Os problemas são agrupados em categorias: Arrays (ordenação, busca binária, dividir e conquistar, janela deslizante), Listas Encadeadas, Árvores (BSTs, travessias BFS/DFS), Estruturas de Dados de Hash (conjuntos e dicionários), Programação Dinâmica (1D/2D, LCS, LIS, mochila), Strings, Matemática (MDC, MMC, fatoração, geometria) e Outros (backtracking, BFS, DFS, pilhas, filas, deques, heaps, matrizes). O autor observa que os problemas em si vêm de sites como LeetCode; apenas as soluções e explicações são originais.
Recursos de aprendizado
O repositório também seleciona recursos em quatro grupos:
- Cursos: cursos universitários gratuitos de Stanford, Princeton, UC San Diego, MIT, Harvard e UC Berkeley, cobrindo algoritmos, estruturas de dados, algoritmos de grafos e tópicos avançados.
- Livros: uma lista curta anotada incluindo Grokking Algorithms, CLRS, Sedgewick & Wayne, The Algorithm Design Manual, Dasgupta et al., Competitive Programming 3 e Cracking the Coding Interview.
- Sites de treino: uma longa lista de plataformas de prática como Codeforces, HackerRank, Topcoder, AtCoder, SPOJ, Project Euler, Kattis, Codewars, Codility e outras.
- Outros recursos: Geeks For Geeks, TheAlgorithms/Python, CP Algorithms, visualizadores (USFCA, VisuAlgo, Algorithm Visualizer), tutoriais variados e playlists do YouTube.
O README convida a relatar bugs ou implementações melhoradas via issues ou pull requests e observa que o repositório é atualizado periodicamente.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.