Soluções AlgoExpert TS
Este repositório contém algumas soluções para os desafios das Perguntas de Codificação AlgoExpert.
Observação:
Ainda não terminei todos os desafios e estou constantemente atualizando este repositório com novas soluções, novas estruturas, novos testes, etc. Então, se você quiser ver as alterações mais recentes, verifique o último desafio que está marcado como concluído na seção da lista de desafios abaixo.
? Fácil (31) | ? Médio (73) | ? Difícil (58) | ? Muito Difícil (38) |
---|---|---|---|
|
|
|
|
Mais...
| Mais...
| Mais...
| Mais...
|
(voltar ao topo)
Testes automáticos após cada commit - usando Git Hooks e Jest
Testes automáticos após cada push - usando Github Actions e Jest
Pasta comum - para ajudá-lo a reutilizar código
Cada desafio tem sua própria pasta – para ajudar você a organizar suas soluções
Cada desafio tem seu próprio arquivo de teste – para ajudá-lo a executar os testes para um desafio específico
Cada desafio tem seu próprio arquivo de teste de caso – para ajudá-lo a organizar seus casos de teste
Cada desafio tem seu próprio arquivo README.md – para ajudá-lo a entender o desafio
Cada desafio tem seu próprio arquivo de solução – para ajudá-lo a escrever sua solução
Fácil de testar sua solução – basta criar um novo arquivo de solução e atualizar o arquivo de teste com sua solução
Makefile – para ajudá-lo a executar os testes, criar novos desafios e comprometer suas soluções
Fácil de enviar sua solução - basta executar make commit
e ele será confirmado com a mensagem feat(CHALLENGE_NAME): add solution {SOLUTION_NUMBER}
Fácil de criar novos desafios - basta executar make new
e ele criará a pasta, os arquivos e o arquivo README.md para você, usando modelos
Fácil de criar novas soluções - basta executar make new-solution
e ele criará o arquivo de solução para você, usando modelos
Fácil de executar os testes - basta executar make test
e ele executará todos os testes
Você pode personalizar os modelos - basta atualizar a pasta scripts/templates
Fácil de depurar no VSCode - há um arquivo launch.json
com uma configuração de depuração para a guia de desafio aberta atual no VSCode
Descoberta automática do último desafio concluído para criar uma nova solução ao executar o comando make new-solution
Descubra automaticamente o próximo desafio a ser concluído para criar um novo desafio ao executar make new
comando
A solução de atualização automática foi testada ao executar o comando make new-solution
(voltar ao topo)
Replicar a atribuição de função de solution-0.ts
para o novo arquivo ao executar o comando make new-solution
Após criar um novo desafio, abra todos os novos arquivos no VSCode
Atualize todos os desafios com a nova estrutura após terminar a lista de desafios
Atualizar automaticamente o número de desafios concluídos em cada nível após terminar cada desafio ao executar o comando make commit
Mova os arquivos de configuração raiz para uma pasta .config
Crie uma pasta docs
com um arquivo README.md
com algumas dicas e truques
(voltar ao topo)
Meu método para resolver os desafios é:
Preparação
Crie a pasta e os arquivos do desafio (usando o comando make new
)
1º Passo
Leia a descrição do desafio
Desenhe uma solução
Escreva a solução em TypeScript sem olhar as dicas da solução
Execute os testes (usando o comando make test-changed
)
Refatore a solução
Repita as etapas 4 e 5 até que todos os testes sejam aprovados
Avalie a complexidade da solução
Confirme a solução (usando o comando make commit
)
Etapa 2dn
Verifique as dicas de solução
Compare minha solução com as dicas de solução
Tente melhorar minha solução ou crie uma nova com base nas dicas da solução (usando o comando make new-solution
)
Repita as etapas 4 a 10 até estar satisfeito com a solução
Confirme a solução (usando o comando make commit
)
3º Passo
Assista ao vídeo da solução
Implementar outras soluções do vídeo ou refatorar minha solução com base no vídeo
Confirme a solução (usando o comando make commit
)
fluxograma LR
INICIAR((Preparação)) --> um
subgrafo um[1º Passo]
A[Ler] --> B[Desenhar]
B --> C[Código]
C --> D[Testes]
D --> C
D --> I[Complexidade]
Eu --> R[Comprometer]
fim
subgrafo dois[2º Passo]
R -> J[Dicas]
J --> K[Comparar]
K --> L[Refator]
L --> M[Testes]
M --> L
M --> S[Confirmar]
fim
subgrafo três[3º Passo]
S -> N[Vídeo]
N --> O[Código]
O --> P[Código/Refator]
P -> Q[Testes]
Q --> P
Q --> T[Confirmar]
fim
um -> dois
dois -> três
três --> Fim(((Fim)))
Carregando(voltar ao topo)
Node.js
Texto datilografado
Brincadeira
(voltar ao topo)
Node.js
(voltar ao topo)
git clone [email protected]:filipe1309/algoexpert-solutions.git
cd algoexpert-solutions
fazer instalar
(voltar ao topo)
Criei um Makefile
para ajudá-lo a executar os testes.
Execute todos os testes:
fazer teste
Execute um teste específico:
faça o teste t=CHALLENGE_NAME
Exemplo:
make test t=two-number-sum
Execute testes alterados:
fazer teste alterado
(voltar ao topo)
Também criei um Makefile
com alguns comandos extras.
faça novo [n=CHALLENGE_NAME] [l=CHALLENGE_LEVEL] [c=CHALLENGE_CATEGORY]
Exemplo:
make new
(preencha os prompts) OUmake new n=two-number-sum l=easy c=arrays
Níveis:
easy
,medium
,hard
,very-hard
Isso criará:
uma pasta ( src/easy/two-number-sum
)
um arquivo solution-0.ts
(o arquivo onde você escreverá sua solução, você pode criar mais se quiser e atualizar o arquivo de teste)
um arquivo de teste solution.spec.ts
um arquivo de teste de caso cases.ts
um arquivo README.md
fazer commit [m=COMMIT_MESSAGE]
Exemplo:
make commit m="feat: add two number sum solution"
se você não passar o argumentom
, ele será confirmado com a mensagem
feat(CHALLENGE_NAME): add solution {SOLUTION_NUMBER}
crie uma nova solução [n=CHALLENGE_NAME_SNAKE] [l=CHALLENGE_LEVEL_LOWER]
Exemplo:
make new-solution [l=easy] [n=two-number-sum]
OUmake new-solution
(preencha os prompts)
Isso criará um novo arquivo de solução solução- solution-{SOLUTION_NUMBER}.ts
e atualizará o arquivo de teste.
Se
solution-0.ts
já existir, ela criarásolution-1.ts
e atualizará o arquivo index.ts e o arquivo de teste. E assim por diante...
Comando de ajuda:
faça ajuda
(voltar ao topo)
Solicitações pull são bem-vindas. Para mudanças importantes, abra primeiro uma edição para discutir o que você gostaria de mudar.
Certifique-se de atualizar os testes conforme apropriado.
(voltar ao topo)
MIT
(voltar ao topo)
AlgoExpert
Presente de Ano Novo - Lista selecionada das 75 principais perguntas do LeetCode para economizar seu tempo
Modelo ShubcoGen™
Git Hooks sem dependências extras como Husky no projeto Node.js
TypeScript + Brincadeira
Testes Unitários com Node.js, Jest e TypeScript
O que é explicado pela notação Big O: complexidade de espaço e tempo
Utilizando mapeamento de caminho no TypeScript
Mapeamento de caminhos
Resolução do Módulo
Compreendendo a equação de distância de Levenshtein para iniciantes
Problema de casamento estável - Numberphile
Problema de casamento estável (a parte matemática)
(voltar ao topo)
Feito com :heart: por Filipe Leuch Bonfim ?
(voltar ao topo)