algorithms_and_data_structures
1.0.0
Estado actual | Estadísticas |
---|---|
Problemas totales de C++ | 188 |
Problemas totales de Python | 15 |
Racha diaria actual | 11 |
Última racha | 20/06/2019 - 21/06/2019 |
Racha actual | 23/06/2019 - 03/07/2019 |
Nota: Parte del código aquí es antiguo y fue escrito cuando estaba aprendiendo C++. Es posible que el código no sea seguro o que haga suposiciones erróneas. Úselo con precaución. Las solicitudes de extracción siempre son bienvenidas.
Problema | Solución |
---|---|
Encuentre el enésimo nodo de la lista vinculada desde el último. | nthToLastNode.cpp, nth_to_last_node.py |
Agregue números donde cada dígito del número esté representado por un nodo de una lista vinculada. Proporcione la salida como una lista vinculada. | add_two_numbers_lists.cpp, add_two_numbers_list.py |
Intercambie nodos de una lista vinculada sin intercambiar datos. | swapNodesWithoutSwappingData.cpp, swap_nodes_ without_swapping_data.py |
Invertir una lista enlazada, de forma iterativa y recursiva | ReverseLinkedListIterAndRecurse.cpp, Reverse_linkedlist.py |
Dada una lista vinculada, invierta los nodos alternativos y agréguelos al final. | ReverseAlternateNodes.cpp |
Solo con un puntero de nodo, elimine el nodo de la lista vinculada. | eliminarNodo.cpp |
Eliminar toda la lista enlazada. | eliminarListaEnlazada.cpp |
Imprime el nodo medio de la lista enlazada sin iterar dos veces. | imprimirMiddleNode.cpp |
Determinar si una lista enlazada es un palíndromo. | listaPallindrome.cpp |
Insertar datos en una lista enlazada ordenada. | insertInASortedLinkedList.cpp |
Determine el punto de intersección (fusión) de dos listas vinculadas dadas. | findIntersectionPointOfLists.cpp, intersección_of_lists.py |
Clona una lista enlazada que tiene el siguiente puntero aleatorio, Complejidad espacial - O(1). | cloneListWithRandomPtr.cpp, clone_list_with_random_ptr.py |
Dada una lista enlazada ordenada con duplicados, elimine los duplicados en una iteración. | eliminarDuplicadosDeListaOrdenada.cpp |
Utilizando el algoritmo de búsqueda de ciclos de Floyd, detecta si una lista vinculada contiene un ciclo; si contiene un ciclo, elimina el ciclo. | floyedCycleDetection.cpp |
Ordenar una lista enlazada mediante ordenación por combinación | merge_sort.cpp |
Dada una lista individualmente enlazada L 0 -> L 1 -> … -> L n-1 -> L n . Reorganice los nodos en la lista (en su lugar) para que la nueva lista formada sea: L 0 -> L n -> L 1 -> L n-1 -> L 2 -> L n-2 .... | reorganizar_lista.cpp |
Incluir contiene una implementación de encabezado único de estructuras de datos y algunos algoritmos.
Estructura de datos/Algoritmo | Implementación |
---|---|
Macros y algoritmos genéricos como intercambio, generación de números aleatorios | genérico.h |
Implementación de pila genérica | pila.h |
Implementación de cola genérica | cola.h |
Implementación de lista genérica | lista.h |
Implementación del árbol de búsqueda binaria | binarioSearchTree.h |
Implementación de clasificación rápida | clasificación rápida.h |
Implementación de ordenación por combinación | fusionarOrdenar.h |
Implementación de clasificación por selección | selecciónOrdenar.h |
Implementación de clasificación de burbujas | bubbleSort.h |
Implementación de doble lista enlazada del kernel de Linux | lista_doble_enlazada.h |
Implementación de gráficos genéricos (lista de adyacencia) | gráfico.h |
Implementación de clasificación de montón | montón_sort.h |
Mi propia implementación de biblioteca de cadenas. | pstring.h pstring.cpp |
Problema | Solución |
---|---|
Determinar si un número es una potencia de 2. | poder_de_2.cpp |
Agregue dos números binarios representados como una cadena. | addBin.cpp |
Determina la siguiente potencia de 2 para un número dado. | next_power_of_2.cpp |
Usando manipulación de bits, determine si un número es múltiplo de 3. | múltiple_de_3.cpp |
Determine la endianidad de la máquina, imprima un número en la endianidad inversa. | inversoEndianness.cpp |
Encuentra la paridad de un número dado. | encontrar_paridad.cpp |
Implemente la multiplicación rápida de un número hasta 7 mediante manipulación de bits. | multiplicar_por_7.cpp |
Invertir bits de un entero sin signo (dos métodos: invertir bit a bit y dividir y conquistar). | bits inversos de un entero.cpp |
Pequeña función para determinar la posición del bit establecido más a la derecha en un número entero determinado. | right_most_set_bit.cpp |
Dado un vector de números, solo un número aparece un número impar de veces, encuentra el número. | encontrar_odd_one_out.cpp |
Dados dos números enteros, determine si su suma sería un desbordamiento de enteros. | enteroOverflow.cpp |
¿Cuántas operaciones de inversión de bits se requerirían para convertir el número A en B? | recuentoNúmeroDeBitFlips.cpp |
Dado un número x y dos posiciones (desde el lado derecho) en la representación binaria de x, escriba una función que intercambie n bits derechos en dos posiciones dadas y devuelva el resultado. También se da por sentado que los dos conjuntos de bits no se superponen. | intercambiarSetOfBits.cpp |
Suma dos números sin utilizar ningún operador aritmético | adición_sin_operadores.cpp |
Louise y Richard juegan un juego. Tienen un contador puesto en N. Louise tiene el primer turno y los turnos se alternan a partir de entonces. En el juego realizan las siguientes operaciones:
| contador_juego.cpp |
Determina si dos números enteros son de signos opuestos. | check_opuesto_signs.cpp |
Intercambie dos bits en la posición pyq de un número entero dado. | intercambioBits.cpp |
Comprueba si un número es potencia de 4. | check_if_power_of_4.cpp |
Problema | Solución |
---|---|
Problema 1-1: Edición 6: Escriba un algoritmo para determinar si una cadena tiene caracteres únicos o no. ¿Podemos hacerlo sin utilizar estructuras de datos adicionales? | 1-1-hasUniqueChars.cpp, 1-1-hasUniqueChars.py |
Problema 1-2: Edición 5: Invierta una cadena cuando pase una cadena C terminada en nulo. | 1-2-edi5-reverseString.cpp |
Problema 1-2: Edición 6: Dadas dos cadenas, determine si una es una permutación de la otra. | 1-2-cadenas-perm.cpp, 1-2-cadenas-perm.py |
Problema 1-3: Edición 5: Escriba un algoritmo para eliminar caracteres duplicados de una cadena. | 1-3-edi5-removeDuplicates.cpp |
Problema 1-3: Edición 6: URLify: Reemplace todos los espacios en una cadena con '%20'. Preferiblemente en el lugar | 1-3-URLify.cpp |
Problema 1-4: Edición 6: Dada una cadena, escriba una función para verificar si es una permutación de un palíndromo. | 1-4-palindromo-permutaciones.cpp |
Problema 1-5: Edición 6: Hay tres ediciones posibles que se pueden realizar en una cadena: Insertar un carácter, Eliminar un carácter, Reemplazar un carácter. Dadas dos cadenas, determine si están a una o 0 ediciones de distancia. | 1-5-una-edición-de distancia.cpp |
Problema 1-6: Implementar un método para realizar una compresión básica de cadenas. La cadena de ejemplo aabcccccaaa debe comprimirse a a2b1c5a3 ; sin embargo, si la cadena comprimida es más grande que la cadena original, devuelve la cadena original. | Compresión de 1-6 cuerdas.cpp |
Problema 1-7: Gire la matriz en el sentido de las agujas del reloj (y en el sentido contrario a las agujas del reloj) 90 grados | 1-7-rotación-matriz.cpp |
Problema 1-8: Escriba un algoritmo tal que si un elemento de la matriz MxN es 0, toda su fila y columna se establece en 0. | 1-8-matriz-cero.cpp |
Problema 1-9: Dadas dos cadenas s1 y s2, determine que s2 es la rotación de s1 usando solo una llamada a una función que verifica si una cadena es la rotación de otra. | 1-9-rotación-de-cuerdas.cpp |
Problema 2-1: eliminar duplicados de una lista vinculada sin clasificar . ¿Qué pasa si no se permite ningún búfer temporal? | 2-1-eliminar-dups.cpp |
Problema 2-2: Determine el k- ésimo nodo del último de una lista enlazada individualmente. (Enfoques iterativos y recursivos) | 2-2-kthToLast.cpp |
Problema 2-3: implementar un algoritmo para eliminar un nodo en medio de una lista enlazada individualmente | 2-3-eliminar-nodo-medio.cpp |
Problema 2-4: Particionar una lista vinculada alrededor de un valor x, todos los nodos menores que x vienen antes que todos los nodos mayores que igual a x | 2-4-partición.cpp |
Problema 2-5: Tiene dos números representados por una lista vinculada donde cada nodo contiene un solo dígito. Los dígitos se almacenan en orden inverso, de modo que los dígitos de 1 están al principio de la lista. Escriba una función que sume los dos números y devuelva la suma como una lista vinculada. Ejemplo:
| 2-5-añadir-listas.cpp |
Problema 2-6: Determinar si la lista enlazada es palíndromo (dos enfoques iterativos y uno recursivo) | 2-6-palíndromo.cpp |
Problema 2-7: Determine si dos listas enlazadas individualmente se cruzan; en caso afirmativo, devuelva el nodo que se cruza. La intersección se define en función de la referencia, no de los valores. | 2-7-intersección.cpp |
Problema 2-8: Detectar si la lista enlazada tiene un bucle, buscar el nodo inicial del bucle y eliminarlo | 2-8-detección-de-bucle.cpp |
Problema | Solución |
---|---|
N.º término de Fibonacci utilizando diferentes técnicas de memorización | fibonacci.cpp |
Problema de subsecuencia común más largo | lcs.cpp, subsecuencia_común_más larga.py |
Wiki del problema de subsecuencia contigua de valor máximo | max_subsequence.cpp |
Número catalán: cuente el número de posibles árboles de búsqueda binaria con n claves | número_catalán.cpp |
Calcule el número de rutas únicas desde el origen (0, 0) hasta el destino (m-1, n-1) en la cuadrícula amxn. Solo puedes moverte hacia abajo o hacia la derecha. | rutas_únicas.cpp |
0-1 Problema de mochila: Imagina que eres un ladrón y quieres robar cosas con un espacio lleno de cosas. Tienes una mochila que puede soportar una capacidad máxima de peso W y quieres llenarla de manera que valga al máximo. Al ser un ladrón inteligente, conoce los pesos y valores de cada artículo en la habitación. ¿Cómo llenarías tu mochila, de modo que obtengas el máximo valor posible, de modo que solo puedas llenar hasta la capacidad W? | 0_1_knapsack_problem.cpp |
Problema | Solución |
---|---|
Recorrido de orden de nivel iterativo del árbol usando cola | nivelOrderTraversalIterative.cpp, nivel_order_tree_traversal_iterative.py |
Recorrido de orden de nivel recursivo del árbol | nivelOrderTraversalRecursive.cpp, nivel_order_tree_traversal_recursive.py |
Recorrido en zigzag del árbol | zigZagTraversal.cpp, zig_zag_traversal.py |
Predecesor y sucesor de un nodo determinado en el árbol de búsqueda binaria | predecesorSucesor.cpp |
Dados los valores de dos nodos en un árbol de búsqueda binaria, encuentre el ancestro común más bajo (LCA). Supongamos que ambos valores existen en el árbol. | ancestro-común-más bajo.cpp, ancestro_común_más bajo.py |
Dado un árbol binario (a diferencia del árbol de búsqueda binaria), encuentre el ancestro común más bajo (LCA). | árbol-binario-ancestro-común-más bajo.cpp |
Dado un árbol binario, imprima todas sus rutas de raíz a hoja, una por línea. | imprimirAllRootToLeafPath.cpp |
Determinar si un árbol es un árbol de suma. Un SumTree es un árbol binario donde el valor de un nodo es igual a la suma de los nodos presentes en su subárbol izquierdo y subárbol derecho. Un árbol vacío es SumTree y la suma de un árbol vacío puede considerarse 0. Un nodo hoja también se considera SumTree. | sumaTree.cpp |
Convierta un árbol en sumTree, de modo que cada nodo sea la suma de los subárboles izquierdo y derecho del árbol original. | convert_to_sum_tree.cpp, convert_to_sum_tree.py |
Convierta una matriz ordenada en un árbol de búsqueda binario equilibrado. | ordenadoArrayToBST.cpp |
Dado un árbol binario, genere la suma de cada columna vertical. | verticalSum.cpp |
Dado un árbol binario y una clave, el nodo con la clave existe en el árbol. Encuentre todos los ancestros del nodo con clave, los ancestros aquí son los nodos que están en camino directo desde el nodo a la raíz. | node_ancestors_in_root_path.cpp |
Dado un árbol binario y una clave, devuelve el nivel del nodo con la clave. La raíz está en el nivel 1 y si el nodo con la clave no existe en el árbol, devuelve 0 | nivel_de_nodo.cpp |
Dado un árbol binario, encuentre todos los caminos desde la raíz hasta los nodos, cuya suma es k. | k_sum_paths.cpp |
Dado un árbol binario, imprima sus nodos nivel por nivel en orden inverso. es decir, todos los nodos presentes en el último nivel deben imprimirse primero, seguidos por los nodos del penúltimo nivel y así sucesivamente. Todos los nodos de cualquier nivel deben imprimirse de izquierda a derecha. | ReverseLevelOrderTraversal.cpp |
Invertir un árbol binario, de forma recursiva e iterativa. | invertir_un_árbol.cpp |
Dado un árbol de búsqueda binaria, encuentre el techo y el piso de una clave determinada en él. Si la clave dada se encuentra en el BST, entonces tanto el piso como el techo son iguales a esa clave; de lo contrario, el techo es igual a la siguiente clave mayor (si la hay) en el BST y el piso es igual a la clave mayor anterior (si la hay) en el BST. | piso_ceil_bst.cpp |
Encuentra el késimo elemento más pequeño en un árbol de búsqueda binario | kth_smallest.cpp |
Validar si un árbol binario determinado es un árbol de búsqueda binario. | validar_bst.cpp |
Dado un árbol de búsqueda binaria y un número objetivo, devuelve verdadero si existen dos elementos en el BST cuya suma sea igual al objetivo dado. | find_target_k.cpp |
Dado un árbol de búsqueda binario no vacío y un valor objetivo, busque el valor en el BST más cercano al objetivo. Además, tenga en cuenta que el valor objetivo es un punto flotante. Sólo habrá un valor único que sea el más cercano al objetivo. | valor_bst_más cercano.cpp, valor_bst_más cercano.py |
Dado un árbol binario, atravesando el preorden, construya una salida de cadena que contenga valores de nodo y paréntesis. El nodo nulo debe representarse mediante un par de paréntesis vacío "()". Y debe omitir todos los pares de paréntesis vacíos que no afectan la relación de mapeo uno a uno entre la cadena y el árbol binario original. Ejemplos en archivo de código | cadena_de_árbol.cpp |
Problema | Solución |
---|---|
Implementación del algoritmo Robin-Karp para búsqueda de cadenas. | robinKarpStringMatching.cpp |
Encuentre la siguiente permutación de una cadena dada, es decir. reorganizar la cadena dada de manera que sea la siguiente cadena lexicográficamente mayor que la cadena dada | next_permutation.cpp |
Implementación del algoritmo Z para coincidencia de patrones. | z.cpp |
Casos de prueba para una biblioteca de cadenas de creación propia | pstring_test.cpp |
Obtenga la longitud de la última palabra de una cadena. | longitud_de_la_última_palabra.cpp |
Encuentra la diferencia entre dos cuerdas. La cadena t se genera mezclando aleatoriamente cadenas s y luego agrega una letra más en una posición aleatoria. Determinar el carácter que es diferente en t. | encontrar_diferencia.cpp |
Problema | Solución |
---|---|
Imprima el contenido de la matriz en orden en espiral. | matriz_espiral_print.cpp |
Dada una matriz M x N, gírela R rotaciones en sentido antihorario y muestre la matriz resultante. | rotar_matriz.cpp |
Girar una matriz por r elementos (izquierda o derecha) | matriz_rotación.cpp |
Dada una matriz de números enteros repetidos/no repetidos, determine el primer int no repetido en esta matriz | first_non_repeating_int.cpp |
En Quantumland, hay n ciudades numeradas del 1 al n. Aquí, c i denota la i- ésima ciudad. Hay n-1 caminos en Quantumland. Aquí, c i y c i+1 tienen un camino bidireccional entre ellos para cada i < n. Hay un rumor de que Flatland va a atacar Quantumland y la reina quiere mantener su tierra segura. El camino entre c i y c i+1 es seguro si hay un guardia en c i o c i+1 . La reina ya ha colocado algunos guardias en algunas de las ciudades, pero no está segura de si son suficientes para mantener las carreteras seguras. Quiere saber el número mínimo de guardias nuevos que necesita contratar. Consulte los comentarios en la solución para obtener detalles de entrada/salida. | save_quantamland.cpp |
Te dan un número entero N. Encuentra los dígitos de este número que dividen exactamente a N (división que deja 0 como resto) y muestra su recuento. Para N=24, hay 2 dígitos (2 y 4). Ambos dígitos dividen exactamente 24. Entonces nuestra respuesta es 2. Vea más detalles en el comentario del encabezado del archivo de solución. | encontrarDigits.cpp |
Cifra y luego descifra un texto usando Caeser Cipher. | caeser_cipher.cpp |
Cifra y luego descifra un texto utilizando el cifrado Vigenère. | vigenere_cipher.cpp |
Genere números binarios entre 1 y N de manera eficiente. | n_binario.cpp |
Implementar la función de potencia. | función_potencia.cpp |
Problema | Solución |
---|---|
Imprime todas las permutaciones de una cadena. Ejemplo: Las permutaciones de ABC son ABC, ACB, BCA, BAC, CAB, CBA. | string_permutations.cpp |
Algoritmo euclidiano para encontrar el máximo común divisor de dos números. (Iterativo y recursivo) | gcd.cpp |
Implemente pow(x,y) utilizando el enfoque de dividir y conquistar. Intente implementarlo en O(logn) | pow.cpp |
Calcule el factorial de un número grande, digamos 100 (tendrá 158 dígitos) | factorial_de_num_grande.cpp |
Genere todas las palabras posibles a partir de un número ingresado en un teclado móvil tradicional | dígitos_teléfono.cpp |
Dada una representación de cadena de un número, elimine n caracteres de la cadena de modo que la representación del número sea la más baja posible. | número_más_bajo_posible.cpp |
Detecta si un número es un número feliz. Un número es un número feliz si la secuencia de operaciones en las que el número se reemplaza por la suma del cuadrado de sus dígitos finalmente conduce a 1. Un número no es un número feliz si estamos en un bucle infinito cuando se realizan las operaciones anteriores. | número_feliz.cpp |
Problema | Solución |
---|---|
Tenemos series de n cotizaciones diarias de precios para una acción. Necesitamos calcular el intervalo del precio de las acciones para los n días. El lapso del iésimo día se define como el número máximo de días consecutivos durante los cuales el precio de la acción fue menor o igual al iésimo día. Para cotizaciones de acciones, {100, 60, 70, 65, 80, 85} el intervalo será {1, 1, 2, 1, 4, 5}. El intervalo para el día 1 siempre es 1, ahora, para el día 2, las acciones están en 60 y no hay ningún día anterior en el que las acciones sean inferiores a 60. Por lo tanto, el intervalo sigue siendo 1. Para el día 3, el precio de las acciones es de 70, por lo que su intervalo es 2, como el día anterior era 60, y así sucesivamente. | stock_span_problem.cpp |
Dada una expresión infija, conviértala a expresión postfija, Ejemplo (A+B)*C --> AB+C* | infix_to_postfix.cpp |
Dada una cadena que contiene solo los caracteres '(', ')', '{', '}', '[' y ']', determine si la cadena de entrada es válida. Los corchetes deben cerrarse en el orden correcto, "( )" y "()[]{}" son válidos, pero "(]" y "([)]" no lo son. | valid_parenthesis.cpp |
Problema | Solución |
---|---|
Dado un vector ordenado, devuelve el primer índice de aparición de un valor en el vector, si el número no existe, devuelve -1 | first_occurrence_binary_search.cpp |
Encuentra el primer elemento repetido en una matriz de números enteros. Dada una matriz de números enteros, encuentre el primer elemento repetido en ella. Necesitamos encontrar el elemento que ocurre más de una vez y cuyo índice de primera aparición es el más pequeño. | primerElementoRepetido.cpp |
Dada una lista de números enteros sin ordenar, A={a 1 ,a 2 ,…,a N }, ¿Encuentra el par de elementos que tienen la diferencia absoluta más pequeña entre ellos? Si hay varios pares, encuéntrelos todos. | números_más cercanos.cpp |
Dada una matriz ordenada, determine el índice del punto fijo en esta matriz. Si la matriz no tiene un punto fijo, devuelva -1. Una matriz tiene un punto fijo cuando el índice del elemento es el mismo que el índice, es decir, i == arr[i], complejidad de tiempo esperada O(logn) | puntofijo.cpp |
Encuentre el elemento máximo en una matriz que primero aumenta y luego disminuye. Entrada: arr[] = {8, 10, 20, 80, 100, 200, 400, 500, 3, 2, 1}, salida: 500. La matriz también puede ser estrictamente creciente o decreciente. La complejidad de ExpectedTime es O (logn). | encontrarMáximo.cpp |
Dada una matriz de números enteros positivos y/o negativos, encuentre un par en la matriz cuya suma sea más cercana a 0. | encontrarParClosestPairToZero.cpp |
Numeros, el Artista, tenía dos listas A y B, de modo que B era una permutación de A. Numeros estaba muy orgulloso de estas listas. Desafortunadamente, al transportarlos de una exposición a otra, algunos números quedaron fuera de A. ¿Puedes encontrar los números que faltan? Notas:
| números faltantes.cpp |
Encuentre el par más cercano de dos matrices ordenadas. Dados dos arreglos ordenados y un número x, encuentre el par cuya suma sea más cercana a x y el par tenga un elemento de cada arreglo. Nos dan dos arreglos ar1[0…m-1] y ar2[0..n-1] y un número x, necesitamos encontrar el par ar1[i] + ar2[j] tal que el valor absoluto de (ar1 [i] + ar2[j] – x) es mínimo. | parmáscercanoordenado.cpp |
Dada una matriz A de n elementos, encuentre tres índices i, j y k tales que A[i]^2 + A[j]^2 = A[K]^2. O (n2) complejidad temporal y O (1) complejidad espacial | sumacuadrada.cpp |
Dada una matriz sin clasificar arr[0..n-1] de tamaño n, encuentre la longitud mínima del subarreglo arr[s..e] tal que al ordenar este subarreglo se ordene todo el arreglo. | minLengthUnsortedArray.cpp |
Encuentra el número que falta en progresión aritmética | número faltante2.cpp |
Encuentra los elementos comunes en 3 vectores ordenados. | commonIn3Arrays.cpp |
Encuentre todos los pares con una suma dada en una matriz/vector sin clasificar | buscar_pares_con_sum.cpp |
Dada una matriz, encuentre el elemento máximo en ella. Un elemento pico es un elemento que es mayor que sus vecinos. | pico_elemento.cpp |
Dada una matriz ordenada de números enteros distintos no negativos, encuentre el elemento faltante más pequeño en ella. | más pequeño_missing.cpp |
Mueve todos los ceros en el vector hasta el final. | mover_zeros.cpp |
Problema | Solución |
---|---|
Primer recorrido en profundidad de un gráfico | dfsDemo.cpp |
Primer recorrido de amplitud de un gráfico | bfsDemo.cpp |
calcule la distancia más corta desde la posición inicial (Nodo S) a todos los demás nodos en el gráfico utilizando el algoritmo de Dijkstra. | dijkstra-shortest-reach.cpp |
Calcule el peso total del árbol de expansión mínimo de un gráfico determinado (suma de los pesos de los bordes que forman MST) utilizando el algoritmo de Prim | primsMST.cpp |
Imprima el árbol de expansión mínimo (MST) de un gráfico determinado utilizando el algoritmo de Kruskal. | kruskalMST.cpp |
Cree un programa para generar una codificación Huffman para cada carácter como una tabla. | huffman_encoding.cpp |
Busque una palabra determinada en un tablero 2D que contenga letras. La palabra se puede construir atravesando secuencialmente celdas horizontales o verticales adyacentes. En una secuencia para formar palabras, las letras en la misma posición no se pueden usar más de una vez. (Consulte la parte superior del archivo para ver ejemplos). | grid_word_search.cpp |
Dada una pantalla 2D, la ubicación del píxel y el nuevo valor del color a rellenar, reemplace el color del píxel y todos los píxeles adyacentes (arriba, abajo, izquierda, derecha) del mismo color con un nuevo color. Esto es lo mismo que llenar por inundación (recuerde el símbolo del cubo) una región en MS-PAINT. | inundación_relleno.cpp |
Problema | Solución |
---|---|
Dadas dos matrices de números enteros, A y B, cada una de las cuales contiene N números enteros. Eres libre de permutar el orden de los elementos en las matrices. ¿Existe una permutación A', B' posible de A y B, tal que A' i +B' i ≥ K para todo i, donde A' i denota el i -ésimo elemento de la matriz A' y B' i denota i ésimo elemento de la matriz B'. | dos_arrays.cpp |
John está recibiendo órdenes. El i -ésimo pedido lo realiza el i- ésimo cliente en este momento y tarda d i tiempo en procesarse. ¿Cuál es el orden en que los clientes recibirán sus pedidos? (ver más detalles en los comentarios de las soluciones) | pedidos_pedido.cpp |
Problema | Solución |
---|---|
Se le proporciona una cadena de dígitos (por ejemplo, "1234", "567", etc.), proporciona todas las combinaciones de letras posibles que podamos generar a partir de esta cadena de dígitos, según la asignación que vemos en el teclado telefónico/móvil. Si ha escrito SMS en teléfonos antiguos, lo sabrá. Por ejemplo, "1" se asigna a "abc", 2 se asigna a "def". Puedes consultar la imagen.
| dialpad_combinaciones.cpp |
Implementar la combinación de patrones comodín con soporte para '?' & ' '.
| wild_card_matching.cpp |
Dado un tablero 2D y una lista de palabras de un diccionario, busque todas las palabras posibles en el tablero a partir de la lista. (Ver ejemplo en la solución) | búsqueda_de_palabras.cpp |
Problema | Solución |
---|---|
Dada una matriz de enteros ordenada sin duplicados, devuelve el resumen de sus rangos. Por ejemplo, dado [0,1,2,4,5,7], devuelve ["0->2","4->5","7"]. | rangos_resumen.cpp |
Dada una matriz 2D, con las siguientes propiedades
| buscar2DII.cpp |
Dada una matriz de enteros sin ordenar, encuentre el primer entero positivo que falta. Ejemplo: [1,2,0] debería devolver 3 y [3,4,-1,1] debería devolver 2. Complejidad de tiempo esperada O(n) y la solución debería usar espacio constante | primeroMissingPositiveNum.cpp |
Dada una matriz de números enteros sin clasificar, encuentre la longitud de la secuencia de elementos consecutivos más larga. Por ejemplo: Dado [100, 4, 200, 1, 3, 2]. La secuencia de elementos consecutivos más larga es [1, 2, 3, 4]. Devuelve su longitud: 4. El algoritmo debe ejecutarse en complejidad O(n). | longConsecutiveSeq.cpp |
Dadas dos matrices de enteros ordenadas nums1 y nums2, combine nums2 en nums1 como una matriz ordenada. Puede suponer que nums1 tiene suficiente espacio (tamaño mayor o igual a m + n) para contener elementos adicionales de nums2. El número de elementos inicializados en nums1 y nums2 son myn respectivamente. | fusionarrays.cpp |
Dada una matriz de números enteros no negativos, inicialmente se ubicará en el primer índice de la matriz. Cada elemento de la matriz representa la longitud máxima de salto en esa posición. Determina si puedes llegar al último índice. Por ejemplo:
| saltarJuego.cpp |
Dado un número entero positivo, devuelve el título de columna correspondiente tal como aparece en una hoja de Excel. Por ejemplo 1 -> A, 2 -> B,...26 -> Z, 27 -> AA, 28 -> AB, ...705 -> AAC | excelColSheetTitle.cpp |
Dado un número de matriz, escriba una función para mover todos los ceros al final manteniendo el orden relativo de los elementos distintos de cero. Por ejemplo, dados números = [0, 1, 0, 3, 12], después de llamar a su función, los números deben ser [1, 3, 12, 0, 0]. | moverZeroes.cpp |
Dada una matriz de números enteros, encuentre si la matriz contiene duplicados. La función debe devolver verdadero si algún valor aparece al menos dos veces en la matriz, y debe devolver falso si cada elemento es distinto. | contieneDuplicate.cpp |
Dada una lista, gire la lista hacia la derecha k lugares, donde k no es negativo. Por ejemplo:
| rotarList.cpp |
Dadas dos palabras, palabra1 y palabra2, encuentre el número mínimo de pasos necesarios para convertir palabra1 en palabra2. (cada operación se cuenta como 1 paso). Tiene permitidas las siguientes 3 operaciones en una palabra:
| editarDistancia.cpp |
Dado un árbol binario, complete cada puntero siguiente para que apunte a su siguiente nodo derecho. Si no hay ningún siguiente nodo derecho, el siguiente puntero debe establecerse en NULL. Inicialmente, todos los punteros siguientes se establecen en NULL. Sólo puede utilizar espacio adicional constante. Puede suponer que es un árbol binario perfecto (es decir, todas las hojas están en el mismo nivel y cada padre tiene dos hijos). | conectarNextPointers.cpp |
Dados n pares de paréntesis, escriba una función para generar todas las combinaciones de paréntesis bien formados. Por ejemplo, dado n = 3, un conjunto de soluciones es "((()))", "(()())", "(())()", "()(())", "( )()()" | generar_parenthesis.cpp |
Dada una matriz que contiene n números distintos tomados de 0, 1, 2, ..., n, encuentre el que falta en la matriz. Por ejemplo, dados números = [0, 1, 3] devuelve 2. | número_faltante.cpp |
Supongamos que una matriz ordenada se gira en algún pivote desconocido para usted de antemano. (es decir, 0 1 2 4 5 6 7 podría convertirse en 4 5 6 7 0 1 2). Encuentra el elemento mínimo. Puede asumir que no existe ningún duplicado en la matriz. | find_min_rotated.cpp |
Dada una matriz S de n números enteros, encuentre tres números enteros en S tales que la suma sea la más cercana a un número dado, objetivo. Devuelve la suma de los tres números enteros. Puedes suponer que cada entrada tendría exactamente una solución. | tresSumClosest.cpp |
Dados n enteros no negativos a 1 , a 2 , ..., a n , donde cada uno representa un punto en la coordenada (i, a i ). Se dibujan n líneas verticales de modo que los dos puntos finales de la línea i estén en (i, a i ) y (i, 0). Encuentre dos líneas que, junto con el eje x, formen un recipiente, de modo que el recipiente contenga la mayor cantidad de agua. Nota: No puedes inclinar el contenedor. | maxArea.cpp |
Dado un árbol binario que contiene dígitos del 0 al 9 únicamente, cada ruta de raíz a hoja podría representar un número. Un ejemplo es la ruta de raíz a hoja 1->2->3 que representa el número 123. Encuentre la suma total de todos los números de raíz a hoja. Ejemplo en comentarios de solución. | sumaRootToLeafNumbers.cpp |
Supongamos que tiene una matriz cuyo iésimo elemento es el precio de una acción determinada el día i. Si solo se le permitiera completar como máximo una transacción (es decir, comprar una y vender una acción), diseñe un algoritmo para encontrar la ganancia máxima. | maxProfitStock.cpp |
Dada la cuadrícula amxn llena de números no negativos, encuentre una ruta desde la parte superior izquierda hasta la parte inferior derecha que minimice la suma de todos los números a lo largo de su ruta. Nota: Solo puedes moverte hacia abajo o hacia la derecha en cualquier momento. | minPath.cpp |
Cuente el número de números primos menores que un número no negativo, n. | contarPrimes.cpp |
Encuentre todas las combinaciones posibles de k números que suman un número n, dado que solo se pueden usar números del 1 al 9 y cada combinación debe ser un conjunto único de números. Asegúrese de que los números dentro del conjunto estén ordenados en orden ascendente. Ejemplo: para k = 3, n = 9 el resultado sería [[1,2,6], [1,3,5], [2,3,4]], de manera similar para k = 3, n = 7, resultado sería [[1,2,4]]. | combinaciónSum3.cpp |
Dado un número entero no negativo, suma repetidamente todos sus dígitos hasta que el resultado tenga solo un dígito. Por ejemplo: Dado num = 38, el proceso es como: 3 + 8 = 11, 1 + 1 = 2. Como 2 tiene solo un dígito, devuélvelo. Seguimiento: ¿Podrías hacerlo sin ningún bucle/recursión en el tiempo de ejecución O(1)? | agregarDigits.cpp |
Dada una matriz con valores de celda 0 o 1. Encuentre la longitud del camino más corto de (a1, b1) a (a2, b2), de modo que el camino solo se pueda construir a través de celdas que tienen el valor 1 y solo se puede viajar en 4. direcciones posibles, es decir, izquierda, derecha, arriba y abajo. | camino_más_corto_laberinto.cpp |
La distancia de Hamming entre dos números enteros es el número de posiciones en las que los bits correspondientes son diferentes. Dados dos números enteros xey, calcule la distancia de Hamming. | distancia_hamming.cpp |
Dados dos árboles binarios e imagina que cuando pones uno de ellos para cubrir el otro, algunos nodos de los dos árboles se superponen mientras que los demás no. Debes fusionarlos en un nuevo árbol binario. La regla de fusión es que si dos nodos se superponen, se suman los valores de los nodos como el nuevo valor del nodo fusionado. De lo contrario, el nodo NOT null se utilizará como nodo del nuevo árbol. | merge_trees.cpp |
Escribe una función que tome una cadena como entrada e invierta solo las vocales de una cadena. | vocales_inversas.cpp |
Dada una cadena, ordénela en orden decreciente según la frecuencia de los caracteres. Por ejemplo:
| ordenarCharByFrequency.cpp |
Producto de matriz excepto uno mismo. Dada una matriz de n enteros donde n > 1, nums, devuelve una salida de matriz tal que la salida [i] sea igual al producto de todos los elementos de nums excepto nums [i]. | producto_excepto_self.cpp |
Dada una matriz ordenada, elimine los duplicados en su lugar y devuelva la nueva longitud. No importa lo que haya en la matriz más allá del tamaño de los elementos únicos. Complejidad esperada de espacio O(1) y tiempo O(n). | eliminar_duplicados.cpp |
Cuente el número de islas en una cuadrícula. Dada una cuadrícula que representa 1 como masa terrestre y 0 como masa de agua, determine el número de islas (más detalles en los comentarios del problema) | contar_islas.cpp |
Encuentre la mediana de un flujo de datos. Diseñe una estructura de datos que admita addNum para agregar un número a la secuencia y findMedian para devolver la mediana de los números actuales vistos hasta ahora. Además, si el recuento de números es par, devuelve el promedio de dos elementos intermedios; en caso contrario, devuelve la mediana. | median_stream.cpp |
Elimine el número mínimo de paréntesis no válidos para que la cadena de entrada sea válida. Devuelve todos los resultados posibles. Nota: La cadena de entrada puede contener letras distintas a los paréntesis (y) | remove_invalid_parenthesis.cpp |
Dada una matriz y un valor, elimine todas las instancias de ese valor en el lugar y devuelva la nueva longitud. No asigne espacio adicional para otra matriz, debe hacerlo modificando la matriz de entrada en el lugar con O (1) memoria adicional. El orden de los elementos se puede cambiar. No importa lo que dejes más allá de la nueva longitud. | remove_element.cpp |
Encuentre la intersección de dos matrices/vectores, dado que dos vectores encuentran el resultado de su interacción. El resultado solo debe contener caracteres únicos y puede estar en cualquier orden. | intersection_of_array.cpp |
Dado un patrón y una cadena STR, encuentre si STR sigue el mismo patrón. Aquí seguir significa una coincidencia completa, de modo que hay una biyección entre una letra en el patrón y una palabra no vacía en Str. ejemplo: | |
Pattern = "ABBA", Str = "Dog Cat Cat Dog" debería volver verdadero. | |
Pattern = "ABBA", str = "Dog Cat Cat Fish" debería volver falso. | |
Pattern = "AAAA", str = "Dog Cat Cat Dog" debería regresar falso. | |
Pattern = "ABBA", str = "perro perro perro perro" debería volver falso. | word_pattern.cpp |
Se le proporciona un vector de números, donde cada número representa | |
Precio de una acción en el día. Si se le permite completar solo | |
Una transacción por día (es decir, comprar una y vender una acción), diseño | |
un algoritmo para encontrar el máximo beneficio. | best_time_to_buy_sell.cpp |
Dada una oración, invierta el orden de los caracteres en cada palabra dentro de una oración mientras preserva el espacio en blanco y el orden de las palabras iniciales. | |
Ejemplo: | |
Entrada: le encanta el chocolate | |
Salida: EHS SEVOL ETALOCOHC | reverse_words.cpp |