Resolución de Tres Problemas Clásicos de Programación Dinámica
Problema 1: Subsecuencia Común Más Larga
Enunciado
Dadas dos cadenas de texto text1 y text2, determina la longitud de la subsecuencia común más larga entre ambas. Una subsecuencia se define como una nueva cadena generada a partir de la original mediante la eliminación de ciertos caracteres, respetando el orden relativo de los caracteres restant ...
Publicado el 7-19 00:09
Soluciones a Problemas de Algoritmos: Listas Enlazadas y Subarrays Máximos
Fusión de dos listas enlazadas ordenadas (LeetCode 21)
Este problema se puede resolver de manera iterativa utilizando un nodo centinela para simplificar la construcción de la lista resultante. La idea consiste en recorerr ambas listas simultáneamente, comparando los valores de los nodos actuales y enlazando el menor al resultado.
Se define un n ...
Publicado el 7-17 19:54
Algoritmos de Aprendizaje — Pila Monótona
Índice
Temperaturas diarias (Pila monótona clásica pura)
Siguiente elemento mayor I (Hash + Pila monótona)
Siguiente elemento mayor II (Arreglo circular)
Recoger agua (Buscar ambos lados más altos)
Rectángulo más grande en histograma (Buscar ambos lados más bajos)
Principio: Los valores almacenados en la pila mantienen la monotonicidad, sirve ...
Publicado el 7-13 17:33
Estrategias Algorítmicas y Resolución de Problemas LeetCode en C++
Algoritmos Greedy (Voraces)
La estrategia voraz o "greedy" implica tomar la mejor decisión local en cada paso con la esperanza de que esta serie de decisiones óptimas a nivel local conduzca a una solución óptima a nivel global.
Problemas de Asignación
455. Asignar Galletas
Explicación: Para satisfacer a la mayor cantidad posible de ni ...
Publicado el 7-11 11:45
Optimización de algoritmos de conteo mediante el patrón de Merge Sort
El algoritmo de ordenamiento por mezcla (Merge Sort) no solo es una herramienta eficiente para organizar datos, sino que su estructura de "dividir y conquistar" permite resolver problemas complejos relacionados con el conteo de pares y rangos. La clave reside en aprovechar el momento en que dos subarreglos ya están ordenados para real ...
Publicado el 7-10 19:23
Solución Completa a los 100 Problemas Más Populares de LeetCode
Actualización continua...
1. Dos Números que Suman un Valor Objetivo
Inicializar una tabla hash para almacenar los elementos del arreglo y sus índices.
Recorrer el arrreglo; para cada elemento:
Calcular la diferencia entre el valor objetivo y el elemento actual.
Verificar si esta diferencia existe en la tabla hash.
Si existe, se encontraron lo ...
Publicado el 7-10 01:10
Implementación de Algoritmos Clásicos: Doble Puntero, Ventana Deslizante y Generación de Matrices Espirales
Cuadrados de un Array Ordenado (LeetCode 977)
Dado un array de enteros nums que está ordenado en orden no-decreciente, el objetivo es generar un nuevo array que contenga los cuadrados de cada número, también ordenado en no-decreciente. Este problema presenta una peculiaridad: al elevar al cuadrado un número negativo, este puede resultar en un v ...
Publicado el 7-9 16:28
Implementación de Cola Monotona y Montículo para LeetCode 239 y 347
Para el problema de la ventana deslizante máxima (LeetCode 239), el objetivo es determinar el valor máximo en cada subarray de tamaño k que se desplaza a lo largo de un array dado. Una solución eficiente utiliza una cola monotona implementada con una cola de doble extremo (deque) para mantener un seguimiento de los elementos en orden decrecient ...
Publicado el 7-7 22:16
Búsqueda de picos en arreglos: técnicas de búsqueda binaria y valor máximo
Dado un arreglo de números enteros nums de tamaño n, se debe ancontrar un elemento pico y retornar su índice. Un elemento pico es aquel cuyo valor es estrictamente mayor que el de sus vecinos adyacentes. Si existen múltiples picos, basta con retornar el índice de cualquiera de ellos.
Consideraciones importantes:
Se asume que nums[-1] = nums[n] ...
Publicado el 7-7 04:55
Resolviendo el Problema del Cambio de Monedas con Programación Dinámica
Se te proporciona monedas de diferentes denominaciones y una cantidad total de dinero. Escribe una función para calcular el número mínimo de monedas necesarias para alcanzar esa centidad. Si no es posible formar esa cantidad con ninguna combinación de monedas, devuelve -1.
**Ejemplo 1:**denominaciones = [1, 2, 5], cantidad = 11devuelve 3 (11 = ...
Publicado el 7-3 19:16