Mi lista de algoritmos ::::
Materiales gratuitos (videos + recursos) para codificación competitiva por Akash Kandpal en Competitive_coding
- Girar matriz, invertir palabras en una cadena
- Evaluar la notación polaca inversa (pila)
- Cuerdas Isomorfas
- Word Ladder (BFS), Word Ladder II (BFS)
- Mediana de dos matrices ordenadas
- Kth Elemento más grande en una matriz
- Coincidencia de comodines, Coincidencia de expresiones regulares
- Intervalos de fusión, Intervalo de inserción
- Dos sumas, Dos sumas II, Dos sumas III, 3 Sumas, 4 Sumas
- Suma más cercana
- Cadena a entero
- Combinar matriz ordenada
- Paréntesis válidos
- Paréntesis válidos más largos
- Implementar strStr ()
- Suma de subarrays de tamaño mínimo
- Buscar Insertar posición
- Secuencia consecutiva más larga
- Palíndromo Válido
- Conversión de zigzag
- Añadir binario
- Longitud de la última palabra
- Triángulo
- Contiene duplicado: I, II, III
- 25) Eliminar duplicados de la matriz ordenada: I, II, Eliminar elemento, Mover
- Ceros
- 27) Subcadena más larga sin repetir caracteres
- Subcadena más larga que contiene 2 caracteres únicos [Google]
- Subcadena con concatenación de todas las palabras
- Subcadena de ventana mínima
- Buscar mínimo en matriz ordenada girada: I, II
- Buscar en matriz girada: I, II
- Min Stack
- Elemento mayoritario: I, II
- Toros y vacas
- Rectángulo más grande en histograma
- Prefijo común más largo [Google]
- Mayor número
- Simplificar ruta
- Comparar números de versión
- Gasolinera
- Triángulo de Pascal: I, II
- Contenedor Con Más Agua
- Candy [Google]
- Atrapar agua de lluvia
- 46) Cuenta y di
- 47) Buscar un rango
- 48) Calculadora básica, Calculadora básica II
- Anagramas de grupo
- Palindrome más corto
- Área de rectángulo
- Rangos de resumen
- Subsecuencia de triplete creciente
- Obtener destino utilizando la lista de números y las operaciones aritméticas
- Vocales inversas de una cuerda
- Flip Game, Flip Game II
- Número perdido, encontrar el número duplicado, primer positivo perdido
- Anagrama válido, cadenas de desplazamiento de grupo
- Elementos K principales frecuentes
- Encontrar elemento de pico
- Patrón de palabras, Patrón de palabras II
- Índice H, Índice H II
- Pares de palindrome
- 64) Una distancia de edición
- 65) Scramble String
- 66) Primera mala versión
- Entero a las palabras inglesas
- Justificación de texto
- Eliminar paréntesis inválidos
- Intersección de dos matrices, Intersección de dos matrices II
- Ventana deslizante máxima, promedio móvil de flujo de datos
- Número de conjetura mayor o menor
- Establecer ceros matriciales
- 2) matriz espiral
- 2) Matriz espiral II
- 3) Buscar una matriz 2D
- 3) Buscar una matriz 2D II
- Girar imagen [Palantir]
- Sudoku válido
- 6) Suma mínima de ruta (DP) [Google]
- Rutas únicas (DP) [Google]
- 7) Caminos únicos II (DP)
- 8) Número de islas (DFS / BFS), Número de islas II (Conjunto disjunto), Número
- de componentes conectados en un gráfico no dirigido
- 9) Regiones Rodeadas (BFS)
- 10) Rectángulo máximo
- 10) cuadrado máximo
- 11) Búsqueda de palabras (DFS)
- 11) Búsqueda de palabras II
- 13) Consulta de suma de rango 2D – Inmutable
- 14) Ruta de mayor aumento en una matriz (DFS)
- 15) Distancia más corta desde todos los edificios
- 16) Juego de la vida
- 17) Casa de pintura, Casa de pintura II
- 18) Solucionador de Sudoku (DFS)
- 19) Muros y puertas (DFS / BFS)
- 20) Tic-Tac-Toe
- 21) Mejor punto de encuentro Problemas clásicos:
- 0) Implementar una pila usando una matriz
- 1) Agregue dos números
- 2) Lista de pedidos
- 3) Ciclo de lista vinculada
- 4) Copiar lista con puntero aleatorio
- 5) Combinar dos listas ordenadas
- 6) Lista par impar impar
- 7) Eliminar duplicados de la lista ordenada
- 7) Eliminar duplicados de la lista ordenada II
- 8) Lista de particiones
- 9) caché LRU
- 10) Intersección de dos listas enlazadas
- 11) Eliminar elementos de lista vinculados
- 12) Intercambiar nodos en pares
- 13) Lista vinculada inversa, Lista inversa inversa II, Imprimir lista vinculada en invertida
- Orden
- 14) Eliminar el enésimo nodo del final de la lista (punteros rápidos-lentos)
- 15) Implementar pila usando colas
- 15) Implementar cola usando pilas
- 16) Lista enlazada de Palindrome
- 17) Implemente una cola usando una matriz
- Eliminar nodo en una lista vinculada
- Nodos inversos en el grupo k 4.1 Árbol 1) Recorrido del árbol binario: preordenar,
- Inorder, Postorder, Level Order, Level Order II, Vertical Order
- Invertir árbol binario
- Kth Elemento más pequeño en un BST
- Secuencia consecutiva más larga del árbol binario
- Validar árbol de búsqueda binaria
- 6) Acoplar árbol binario a la lista vinculada
- 7) Suma de ruta (DFS o BFS)
- 7) Ruta Sum II (DFS)
- 8) Construir un árbol binario a partir de un recorrido transversal y posterior al pedido
- 8) Construir árbol binario a partir del pedido anticipado y el recorrido del pedido
- 9) Convertir matriz ordenada en árbol de búsqueda binaria [Google]
- 10) Convertir lista ordenada en árbol de búsqueda binaria [Google]
- 11) Profundidad mínima del árbol binario
- 12) Suma máxima de ruta de árbol binario *
- 13) Árbol binario equilibrado
- 14) árbol simétrico
- 15) Iterador de árbol de búsqueda binaria
- 16) Vista del lado derecho del árbol binario
- 17) El ancestro común más bajo de un árbol de búsqueda binaria
- 18) El ancestro común más bajo de un árbol binario
- 19) Verifique la serialización previa al pedido de un árbol binario
- 20) Rellenar los siguientes punteros derechos en cada nodo
- 21) Rellenar los siguientes punteros derechos en cada nodo II
- 21) Árboles únicos de búsqueda binaria (DP)
- 21) Árboles únicos de búsqueda binaria II (DFS)
- 22) Sumar raíz a números de hoja (DFS)
- 23) Cuenta los nodos de árbol completos
- 24) Valor de árbol de búsqueda binario más cercano
- 25) Rutas de árbol binario
- 26) Profundidad máxima del árbol binario
- 27 Recuperar árbol de búsqueda binaria
- 28) Mismo árbol
- 29) Serializar y deserializar árbol binario
- 30) Sucesor de pedido en BST
- 31) Encuentra las hojas del árbol binario
- 32) El mayor subárbol BST 4.2 Heap 1) Combinar k arreglos ordenados [Google]
- 2) Combinar k Listas ordenadas *
- 3) Encuentra la mediana del flujo de datos
- 4) Salas de reuniones II, Salas de reuniones
- 5) Suma de rango 4.3 Trie 1) Implementar Trie (árbol de prefijos)
- Agregar y buscar palabra – Diseño de estructura de datos (DFS) 4.4 Árbol de segmentos 1)
- Consulta de suma de rango: mutable
- El problema del horizonte Clasificación 1) Mergesort
- Ordenación rápida
- Tipo de inserción.
- Espacio máximo (clasificación de cubeta)
- Ordenar colores (contar contando)
- Tipo de inserción
- Tipo de selección
- Bubble sortMerge SortQuicksortBinary SearchBreadth First Search (BFS) | Implementación iterativa y recursivaDepth First Search (DFS) | Implementación iterativa y recursiva Algoritmo Lee | Trayectoria más corta en un algoritmo de relleno de MazeFlood Algoritmo de detección del ciclo de Floyd Problema de submatriz máxima (algoritmo de Kadane) Subsecuencia de mayor aumento
- Pedido, Preorden, Postorder
- Gráficos Algoritmos Amplitud Primera búsqueda (BFS) Profundidad Primera búsqueda (DFS) Ruta más corta desde el origen a todos los vértices ** Dijkstra ** Ruta más corta desde cada vértice a cualquier otro vértice ** Floyd Warshall ** Árbol de expansión mínimo ** Prim ** Mínimo Árbol de expansión ** Kruskal ** Algoritmo de clasificación topológica de Johnson Puntos de articulación (o vértices de corte) en un GraphBridges en un gráfico
- Programación dinámica Subsecuencia común más larga Subsecuencia creciente más larga Editar distancia Partición mínima Formas de cubrir una distancia Trayectoria más larga en matriz Problema de suma de subconjunto Estrategia óptima para un juego Problema de mochila de 0-1 Programación de línea de ensamblaje
- Búsqueda y clasificación Búsqueda binaria Clasificación rápida Clasificación combinada Estadística de pedido Algoritmo KMP Algoritmo de Rabin karpZ Coincidencia de cadenas de CoraShoho Algoritmo de clasificación Ordenar: Parte 1, Parte 2 y Parte 3
- 1. Matrices
Sepa cómo usar matrices. Los usarás mucho. Aprenda a hacerlos crecer dinámicamente (para lenguajes de programación como C). Sepa cómo usar una matriz de biblioteca estándar (ejemplo: vector) Aprenda a usar cadenas (son matrices). Sepa cómo ordenarlos con dos buenos algoritmos de ordenación ( QuickSort y MergeSort ) Aprenda a buscar en una matriz. Primero búsqueda lineal y luego búsqueda binaria. Aprenda QuickSelect , será útil.
- 2. Listas vinculadas
Aprenda a crear una lista vinculada. Conozca las operaciones básicas: insertar, imprimir, eliminar. No usará mucho las listas enlazadas en la palabra real, pero tener una sólida comprensión de cómo funcionan será de gran utilidad. Conozca diferentes versiones de listas enlazadas: circular y doble , por ejemplo, conozca las ventajas de una lista vinculada frente a una matriz
- 3-4. Pilas y colas
Aprenda a implementar pilas y colas con matrices y listas. Conozca las ventajas. Para las pilas, aprenda la conversión y evaluación postfix. También aprende emparejamiento de paréntesis. Esto te ayudará a dominar las pilas. Para las colas, debes intentar hacer una programación multihilo.
- 5. árboles
Si hizo un trabajo adecuado con las listas vinculadas, los árboles deberían sentirse un poco naturales. Aprenda a implementar un árbol binario (insertar, eliminar, buscar). Conozca las propiedades básicas de un árbol. Aprenda al menos un árbol de equilibrio automático ( AVL, Splay, Rojo-Negro ) .Me gusta mucho la estructura de datos Trie . Tiene algunas aplicaciones bastante agradables. Otra estructura de datos utilizada es el montón. Aprenda Breadth First Search y Depth First Search .
- 6. Hashmap
Hashmap es una estructura de datos realmente útil. Aprenda cómo usarlos y cómo implementar uno (así que aprenda cómo hacer una función de hash ordenada).
- 7. Gráficos
Aprenda qué es un gráfico y cómo implementarlos con matrices y listas. Aprenda cómo usarlos y cómo implementar uno (así que aprenda cómo hacer una función de hash ordenada). Aprenda cómo encontrar la ruta más corta en un gráfico. Implemente DFS y BFS.
- 8-10. Algoritmos
Como mencioné antes, aprenda los algoritmos de clasificación y búsqueda. Aprenda la notación Big O. Busque: MergeSort, QuickSort, HeapSort . Diskstra . No usará esto, pero le dará una mejor comprensión de los gráficos. Hay otros buenos algoritmos que tal vez quiera aprender. Algunos son algoritmos de libros de texto (cadena inversa, subcadena, etc.).
Espero que esto ayude.
- Estructura de datos de matriz
- Lista dispersa Lista enlazada
- ListStack doblemente enlazado (tipo de datos abstractos)
- Cola (tipo de datos abstractos)
- Árbol binario de cola doble
- TreapRed – black treeHeap (estructura de datos)
Cadena (informática) y
- Trie
Árbol B
- B + treeGraph (tipo de datos abstractos)
- Tabla de picadillo
- Matriz asociativa
Búsqueda lineal Algoritmo de búsqueda binaria
- Búsqueda ternaria
Algoritmo de fusión
- Ordenar fusión
Tipo de inserción
- Timsort
Heapsort
- Algoritmo de selección de clasificación rápida Recorrido gráfico
- Algoritmo de Dijkstra
- Algoritmo de Bellman-Ford
Clasificación topológica
Estructura de datos de conjunto disjunto
- Árbol de expansión mínimo
Red de flujo
- http://www.iarcs.org.in/inoi/onl …
Algunas fuentes que podrías usar:
http://cs.yale.edu/homes/aspnes/ … https://www.interviewbit.com/das ..
Seguiré actualizando las listas a medida que lo haga. Cualquier recomendación o cambio o adición / eliminación son bienvenidos 🙂