Soluciones AlgoExpert TS
Este repositorio contiene algunas soluciones para los desafíos de las preguntas de codificación de AlgoExpert.
Nota:
Aún no he terminado todos los desafíos y estoy constantemente actualizando este repositorio con nuevas soluciones, nuevas estructuras, nuevas pruebas, etc. Entonces, si desea ver los cambios más recientes, consulte el último desafío que está marcado como completado. en la sección de lista de desafíos a continuación.
? Fácil (31) | ? Medio (73) | ? Duro (58) | ? Muy Duro (38) |
---|---|---|---|
|
|
|
|
Más...
| Más...
| Más...
| Más...
|
(volver arriba)
Pruebas automáticas después de cada confirmación : usando Git Hooks y Jest
Pruebas automáticas después de cada pulsación : usando Github Actions y Jest
Carpeta común : para ayudarle a reutilizar el código
Cada desafío tiene su propia carpeta , para ayudarte a organizar tus soluciones.
Cada desafío tiene su propio archivo de prueba , para ayudarlo a ejecutar las pruebas para un desafío específico.
Cada desafío tiene su propio archivo de prueba de caso , para ayudarle a organizar sus casos de prueba.
Cada desafío tiene su propio archivo README.md , para ayudarlo a comprender el desafío.
Cada desafío tiene su propio archivo de solución , para ayudarle a escribir su solución.
Es fácil probar su solución : simplemente cree un nuevo archivo de solución y actualice el archivo de prueba con su solución.
Makefile : para ayudarle a ejecutar las pruebas, crear nuevos desafíos y comprometer sus soluciones
Es fácil confirmar su solución : simplemente ejecute make commit
y se confirmará con el mensaje feat(CHALLENGE_NAME): add solution {SOLUTION_NUMBER}
Es fácil crear nuevos desafíos : simplemente ejecute make new
y creará la carpeta, los archivos y el archivo README.md por usted, usando plantillas.
Fácil de crear nuevas soluciones : simplemente ejecute make new-solution
y creará el archivo de solución por usted, utilizando plantillas.
Fácil de ejecutar las pruebas : simplemente ejecute make test
y ejecutará todas las pruebas.
Puede personalizar las plantillas : simplemente actualice la carpeta scripts/templates
Fácil de depurar en VSCode : hay un archivo launch.json
con una configuración de depuración para la pestaña de desafío abierta actual en VSCode
Descubrimiento automático del último desafío completado para crear una nueva solución al ejecutar el comando make new-solution
Descubrir automáticamente el siguiente desafío a completar para crear un nuevo desafío al ejecutar el comando make new
La solución de actualización automática se ha probado al ejecutar el comando make new-solution
(volver arriba)
Replicar la asignación de función de solution-0.ts
a un nuevo archivo al ejecutar el comando make new-solution
Después de crear un nuevo desafío, abra todos los archivos nuevos en VSCode
Actualiza todos los desafíos con la nueva estructura después de terminar la lista de desafíos.
Actualiza automáticamente el número de desafíos completados en cada nivel después de terminar cada desafío al ejecutar el comando make commit
Mueva los archivos de configuración raíz a una carpeta .config
Cree una carpeta docs
con un archivo README.md
con algunos consejos y trucos
(volver arriba)
mi metodo para resolver los desafíos es:
Preparación
Cree la carpeta y los archivos del desafío (usando el comando make new
)
1er paso
Lee la descripción del desafío.
dibujar una solución
Escriba la solución en TypeScript sin mirar las sugerencias de solución
Ejecute las pruebas (usando el comando make test-changed
)
Refactorizar la solución
Repita los pasos 4 y 5 hasta que pasen todas las pruebas.
Evaluar la complejidad de la solución.
Confirme la solución (usando el comando make commit
)
Paso 2dn
Verifique las sugerencias de solución
Compare mi solución con las sugerencias de solución.
Intente mejorar mi solución o cree una nueva basada en las sugerencias de solución (usando el comando make new-solution
)
Repita los pasos del 4 al 10 hasta que esté satisfecho con la solución.
Confirme la solución (usando el comando make commit
)
3er paso
Mira el vídeo de la solución
Implementar otras soluciones del video o refactorizar mi solución según el video.
Confirme la solución (usando el comando make commit
)
diagrama de flujo LR
INICIO((Preparación)) --> uno
subgrafo uno[1er paso]
A[Leer] --> B[Dibujar]
B --> C[Código]
C --> D[Pruebas]
D --> C
D --> I[Complejidad]
I --> R[Confirmar]
fin
subgrafo dos[2do Paso]
R --> J[Consejos]
J --> K[Comparar]
K --> L[Refactorización]
L --> M[Pruebas]
METRO --> L
M --> S[Confirmar]
fin
subgrafo tres[3er Paso]
S --> N[Vídeo]
N --> O[Código]
O --> P[Código/Refactor]
P --> Q[Pruebas]
Q --> P
Q --> T[Confirmar]
fin
uno -.-> dos
dos -.-> tres
tres -> Fin (((Fin)))
Cargando(volver arriba)
Nodo.js
Mecanografiado
Broma
(volver arriba)
Nodo.js
(volver arriba)
clon de git [email protected]:filipe1309/algoexpert-solutions.git
cd algoexpert-soluciones
hacer la instalación
(volver arriba)
He creado un Makefile
para ayudarte a ejecutar las pruebas.
Ejecute todas las pruebas:
hacer prueba
Ejecute una prueba específica:
hacer prueba t=CHALLENGE_NAME
Ejemplo:
make test t=two-number-sum
Ejecute pruebas modificadas:
hacer cambios de prueba
(volver arriba)
También creé un Makefile
con algunos comandos adicionales.
crear nuevo [n=CHALLENGE_NAME] [l=CHALLENGE_LEVEL] [c=CHALLENGE_CATEGORY]
Ejemplo:
make new
(completar las indicaciones) Omake new n=two-number-sum l=easy c=arrays
Niveles:
easy
,medium
,hard
,very-hard
Esto creará:
una carpeta ( src/easy/two-number-sum
)
un archivo solution-0.ts
(el archivo donde escribirá su solución, puede crear más si lo desea y actualizar el archivo de prueba)
un archivo de prueba solution.spec.ts
un archivo de prueba de caso cases.ts
un archivo README.md
hacer compromiso [m=COMMIT_MESSAGE]
Ejemplo:
make commit m="feat: add two number sum solution"
si no pasa el argumentom
, se confirmará con el mensaje
feat(CHALLENGE_NAME): add solution {SOLUTION_NUMBER}
crear nueva solución [n=CHALLENGE_NAME_SNAKE] [l=CHALLENGE_LEVEL_LOWER]
Ejemplo:
make new-solution [l=easy] [n=two-number-sum]
Omake new-solution
(completar las indicaciones)
Esto creará un nuevo archivo de solución solution-{SOLUTION_NUMBER}.ts
y actualizará el archivo de prueba.
Si
solution-0.ts
ya existe, crearásolution-1.ts
y actualizará el archivo index.ts y el archivo de prueba. Etcétera...
Comando de ayuda:
hacer ayuda
(volver arriba)
Las solicitudes de extracción son bienvenidas. Para cambios importantes, primero abra un problema para discutir lo que le gustaría cambiar.
Asegúrese de actualizar las pruebas según corresponda.
(volver arriba)
MIT
(volver arriba)
AlgoExperto
Regalo de Año Nuevo: lista seleccionada de las 75 preguntas principales de LeetCode para ahorrarle tiempo
Plantilla ShubcoGen™
Git Hooks sin dependencias adicionales como Husky en el proyecto Node.js
Mecanografiado + broma
Pruebas unitarias con Node.js, Jest y TypeScript
¿Qué es la notación O grande explicada? Complejidad del espacio y el tiempo
Utilizando el mapeo de ruta sin TypeScript
Mapeo de caminos
Resolución del módulo
Comprender la ecuación de distancia de Levenshtein para principiantes
Problema del matrimonio estable - Numéfilo
Problema del matrimonio estable (la parte matemática)
(volver arriba)
Hecho con :corazón: por Filipe Leuch Bonfim ?
(volver arriba)