Categorías
Algorithms

Clasificación de problemas de algoritmo

Un problema de algoritmo consta de 3 partes: aporte, producción y solución / algoritmo. La entrada puede ser una matriz, cadena, matriz, árbol, lista vinculada, gráfico, etc. La solución del algoritmo puede ser programación dinámica, búsqueda binaria, BFS, DFS o clasificación topológica. La solución también puede ser una estructura de datos, como una pila, cola / eliminación de cola, conjunto hash, conjunto de árboles, mapa hash, árbol (montón, árbol de búsqueda binaria, trie, árbol de segmentos, árbol de índice binario), conjunto disjunto, etc. En esta publicación, los problemas están etiquetados por algoritmos o estructuras de datos de entrada.

1. Matriz / Cadena

–Punteros simples–
1) Eliminar duplicados de la matriz ordenada I, II, Eliminar elemento, Mover ceros
2) Caramelos, agua de lluvia atrapada, producto de la matriz excepto uno mismo
3) Suma de subarreglos de tamaño mínimo, rangos de resumen, rangos que faltan
4) Combinar intervalos, Insertar intervalo, Etiquetas de partición, Buscar y reemplazar en cadena, Mi calendario II
5) Una distancia de edición, combinación de matriz ordenada, es subsecuencia, comparación de cadenas de retroceso, coincidencia de cadenas repetidas
6) Recipiente con mayor cantidad de agua, vocales inversas de una cuerda, palíndromo válido
7) Distancia de palabra más corta, Distancia de palabra más corta II, Distancia de palabra más corta III
8) Intersección de dos matrices, intersección de dos matrices II
9) Dos Sumas II, Dos Sumas III, 3 Sumas, 4 Sumas, 3 Sumas Más Cercanas
10) Wiggle Sort, Wiggle subsecuencia
11) Prefijo común más largo
12) Siguiente permutación, ajuste de pantalla de oración

–Búsqueda binaria–
Buscar insertar posición
Mediana de dos matrices ordenadas
Encontrar mínimo en matriz ordenada rotada: I, II
Buscar la primera y la última posición del elemento en una matriz ordenada
Adivina el número más alto o más bajo
Primera mala versión
Buscar en matriz rotada: I, II
Subsecuencia creciente más larga, recuento de números más pequeños después de uno mismo
Sobres de muñecas rusas
Índice H, índice H II

–HashMap–
Anagrama válido, cadenas cambiadas de grupo
Pares palíndromos
Reflexión de línea
Cadenas isomorfas

–Problemas relacionados con el subarreglo de suma–
Suma de dos, Suma de subarreglo de tamaño máximo es igual a k, Suma de subarreglo es igual a K

–HashMap – Seguimiento–
Subcadena más larga sin caracteres repetidos
Subcadena más larga que contiene k caracteres únicos
Subcadena con concatenación de todas las palabras
Subcadena de ventana mínima
Subcadena más larga con al menos K caracteres repetidos
Permutación en cadena

–HashSet–
Secuencia consecutiva más larga

–Caching–
Elemento mayoritario: I, II
Aumento de la subsecuencia del triplete, encuentre los segundos elementos más grandes en una matriz

–BFS–
Escalera de palabras (BFS), Escala de palabras II (BFS)

–Montón–
Elementos más frecuentes de K
Salas de Reuniones II, Salas de Reuniones
Suma de rango
Fusionar k matrices ordenadas
Fusionar k listas ordenadas
Reorganizar cadena k distancia aparte
Costo mínimo para contratar trabajadores K
¿Cómo funciona un montón? un video corto

  LeetCode - Es subsecuencia (Java)

–TreeSet–
Contiene duplicados: I, II, III
Suma máxima de rectángulo no mayor que K
Suma máxima de submatrices cerca de K
K ranuras vacías

–Stream – (deque / caché / montón / conjunto de árboles)
Máximo de ventana corrediza
Promedio móvil del flujo de datos
Encontrar la mediana en el flujo de datos
Flujo de datos como intervalos disjuntos
Transmisión aleatoria: nodo aleatorio de lista enlazada, mezcla aleatoria de una matriz

–Clasificación–
Mergesort
Quicksort, el k-ésimo elemento más grande de una matriz
Ordenar colores (Ordenar contando)
Espacio máximo (clasificación de cucharón)
Anagramas de grupo (orden de cubo)

– índice de seguimiento usando una matriz–
Número feo, número feo II
Número súper feo
Encuentre K pares con sumas más pequeñas de dos matrices

–Girar–
Rotar matriz, invertir palabras en una cadena

–Encontrar un número–
Numero faltante
Encuentra el número duplicado
Primer positivo faltante

–usando índice para agregar elementos a una lista–
Reconstrucción de cola por altura

–Itere dentro de un límite si el límite es fijo–
Reloj binario
Próxima hora más cercana

2. Matriz

–matriz clasificada–
Buscar una matriz 2D
Buscar una matriz 2D II
Kth elemento más pequeño en una matriz ordenada

–cola–
Juego de diseño de serpientes

–union-find (conjunto disjunto) –
Número de islas II
Número de componentes conectados en un gráfico no dirigido
La mayoría de las piedras se eliminan con la misma fila o columna

–DFS–
Camino creciente más largo en una matriz
Búsqueda de palabras, Búsqueda de palabras II
Número de islas (DFS / BFS)
Encuentra un camino en una matriz
Sudoku Solver, Sudoku válido
Muros y puertas (DFS / BFS)

–BFS–
Regiones rodeadas (BFS)

–Otros–
Establecer ceros de matriz
Matriz en espiral, Matriz en espiral II
Rotar imagen
Consulta de suma de rango 2D: inmutable
Distancia más corta de todos los edificios, el mejor punto de encuentro
Juego de vida
Tic-Tac-Toe

– multiplicación de matrices–
Multiplicación de matriz dispersa

3. Lista vinculada

Sumar dos números
Lista de reorden
Ciclo de lista vinculada
Copiar lista con puntero aleatorio
Fusionar dos listas ordenadas
Lista vinculada par impar
Eliminar duplicados de la lista ordenada
Eliminar duplicados de la lista ordenada II
Lista de particiones
Intersección de dos listas enlazadas
Eliminar elementos de la lista vinculada
Intercambiar nodos en pares
Lista enlazada inversa, Lista enlazada inversa II, Lista enlazada doble inversa, Imprimir lista enlazada en orden inverso
Eliminar el nodo N del final de la lista (punteros rápidos y lentos)
Lista vinculada Palindrome
Eliminar nodo en una lista vinculada
Nodos inversos en el grupo k
Lista Ordenada
Más una lista vinculada

4. Árbol

–traveral–
Recorrido de árbol binario: preorden, desorden, posorden, orden de nivel, orden de nivel II, orden vertical

  LeetCode - Combination Sum IV (Java)

–dfs / bfs–
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
Aplanar el árbol binario a la lista vinculada
Suma de ruta (DFS o BFS)
Suma de ruta II (DFS)
Construya un árbol binario a partir del recorrido de orden y posorden
Construya un árbol binario a partir de preorden y orden transversal
Convertir matriz ordenada en árbol de búsqueda binaria
Convertir lista ordenada en árbol de búsqueda binaria
Profundidad mínima del árbol binario
Suma máxima de ruta de árbol binario *
Árbol binario equilibrado
Árbol simétrico
Iterador de árbol de búsqueda binaria
Vista lateral derecha del árbol binario
Ancestro común más bajo de un árbol de búsqueda binaria
El antepasado común más bajo de un árbol binario
Suma de subárbol más frecuente
Verificar la serialización de pedidos anticipados de un árbol binario
Rellenar los punteros siguientes a la derecha en cada nodo
Rellenar los punteros siguientes a la derecha en cada nodo II
Árboles de búsqueda binarios únicos (DP)
Árboles de búsqueda binaria únicos II (DFS)
Sumar números de raíz a hoja (DFS)
Contar nodos de árboles completos
Valor más cercano del árbol de búsqueda binaria
Rutas de árbol binario
Profundidad máxima del árbol binario
Recuperar árbol de búsqueda binaria
Mismo árbol
Serializar y deserializar el árbol binario
Sucesor de orden en BST, Sucesor de orden en BST II
Encontrar hojas de árbol binario
El subárbol BST más grande
Convierta BST en una lista ordenada doblemente enlazada

–Trie–
Implementar Trie (árbol de prefijos)
Agregar y buscar palabras: diseño de estructura de datos (DFS)

–Árbol de segmentos y árbol de índice binario–
Consulta de suma de rango: mutable
El problema del horizonte

5. Apilar

Implementación de la estructura de datos de pila y cola (familiarícese con la pila y la cola)
Implementar pila usando colas
Implementar cola usando pilas
Implementar una pila usando una matriz
Implementar una cola usando una matriz

–Apilar–
Evaluar notación polaca inversa (pila)
Paréntesis válidos
Paréntesis válidos más largos
Pila mínima
Cantidad máxima de trozos para ordenar

–Apilar – Rectángulo más grande–
Rectángulo más grande en histograma
Rectángulo máximo

–Stack – Objeto anidado–
Mini analizador
Aplanar el iterador de lista anidada
Suma de peso de lista anidada
Suma de peso de lista anidada II (HashMap)
Ruta de archivo absoluta más larga
Decodificar cadena
Evaluar la expresión matemática

6. DFS

Partición a K subconjuntos de igual suma
Permutaciones, Permutaciones II, Secuencia de permutación, Número de matrices cuadradas
Generar paréntesis
Suma de combinación (DFS), II (DFS), III (DFS), IV (DP)
Coincidencia de comodines, Coincidencia de expresiones regulares, Palabras expresivas
Obtener el objetivo mediante lista de números y operaciones aritméticas
Flip Game, Flip Game II
Patrón de palabras, Patrón de palabras II
Cadena de codificación
Quitar paréntesis no válidos
Palíndromo más corto
Números lexicográficos
Combinaciones (DFS)
Combinaciones de letras de un número de teléfono (DFS)
Restaurar direcciones IP
Combinaciones de factores (DFS)
Subconjuntos, subconjuntos II

  LeetCode - Próxima hora más cercana (Java)

7. Programación dinámica

Cambio de moneda
Partición Palíndromo
Partición Palíndromo II
Ladrón de casas, II, III
Juego de salto, II
Mejor momento para comprar y vender acciones, II, III, IV
Juego de mazmorras
Decodificar formas
Cuadrados perfectos
Salto de palabra
Descanso de palabras II
Subsecuencia de ventana mínima

Cuadrado máximo
Suma de ruta mínima
Caminos únicos
Caminos únicos II
Casa de pintura, Casa de pintura II

Subarreglo máximo
Subarreglo de producto máximo

–DP – 2D–
Editar distancia
Total de subsecuencias distintas
Subcadena palindrómica más larga
Subsecuencia común más larga
Subcadena común más larga

8. Diseño de estructura de datos

Caché LRU
Insertar Eliminar GetRandom O (1)
Insertar Eliminar GetRandom O (1) – Se permiten duplicados
Insertar Eliminar GetMostFrequent O (1)
Diseñar directorio telefónico
Diseño Twitter

9. Manipulación de bits

Un solo numero
Número único II
Brecha binaria máxima
Número de 1 bits
Bits inversos
Secuencias de ADN repetidas
Y de rango de números bit a bit
Suma de dos enteros
Contando Bits
Producto máximo de longitudes de palabras
Código gris
Validación UTF-8

10. Gráfico

—- clasificación topológica —-
Calendario de cursos
Horario del curso II
Árboles de altura mínima

—- BFS / DFS —-
Gráfico de árbol válido
Clonar gráfico
Reconstruir itinerario

11. Matemáticas / Números

–energía–
Pow (x, n), Poder de dos, Poder de tres, Poder de cuatro
Superpoder

– /% –
Entero inverso
Número de palíndromo

Enésimo dígito
Fracción a decimal recurrente
Número de columna de la hoja de Excel
Título de la columna de la hoja de Excel
Ceros finales factoriales
Número feliz
Count Primes
Mas uno
Dividir dos enteros
Multiplicar cadenas
Puntos máximos en una línea
Rotura de enteros
Agregar dígitos
Subconjunto divisible más grande
Contar números con dígitos únicos
Dígitos rotados
Eliminar K dígitos

–Otro–
Número más grande
Triángulo
Cadena a entero
Implementar strStr ()
Conversión ZigZag
Agregar binario
Longitud de la última palabra
Toros y vacas
Simplificar la ruta
Comparar números de versión
Triángulo de Pascal: I, II
Contar y decir
Calculadora básica, Calculadora básica II
Área de rectángulo
Encontrar elemento pico
Entero a palabras en inglés
Justificación de texto
Gasolinera
Auto cruce
Matriz de parcheo
Nim Game (enumere los primeros ejemplos y encuentre las reglas)
Interruptor de bombilla
Cerca del dolor
Suma de peso de lista anidada

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *