Algorismica
Busca apuntes, exámenes y más
? Colección de Ejercicios - Capítulo 5: Elemento Mayoritario. Algoritmo para detectar si existe un número que aparece más de n/2 veces en una lista no ordenada. Restricción: El coste no puede superar O(n log n). Se explora el uso de diccionarios (con Dic
? Colección de Ejercicios - Capítulo 5: Combinatoria y Texto. Algoritmo para contar cuántas veces aparece una palabra pequeña como subsecuencia (no necesariamente contigua) dentro de una cadena más larga. Uso de la librería itertools para generar combina
? Colección de Ejercicios - Capítulo 5: Ordenación Personalizada. Algoritmo para ordenar una lista mixta que contiene cadenas de números y cadenas de letras (ej: ['abc', '123', 'zz']), priorizando los números al principio. Implementación basada en Select
? Colección de Ejercicios - Capítulo 5: Maximum Subarray Problem. Resolución del famoso problema de encontrar la sublista contigua con la suma más alta. Comparativa: Solución por Fuerza Bruta (lenta). Solución por Dividir y Vencer. Algoritmo de Kadane
? Colección de Ejercicios - Capítulo 5: Ordenación Avanzada. Adaptación de los algoritmos de ordenación (Quicksort y Mergesort) para tratar eficientemente listas donde los elementos aparecen por parejas (ej: [3,3,1,1,5,5]). Incluye análisis de complejida
? Colección de Ejercicios - Capítulo 5: Generación Combinatoria. Algoritmo para generar todos los números de N dígitos donde cada dígito es estrictamente mayor que el anterior (ej: 123, 145, 239...). Enfoque: Estrategia recursiva/constructiva para formar
? Colección de Ejercicios - Capítulo 5: Algoritmos Avanzados. Implementación recursiva del algoritmo de Karatsuba para la multiplicación rápida de números grandes, mejorando la complejidad cuadrática tradicional.
? Colección de Ejercicios - Capítulo 5: Variantes de Búsqueda. Solución a un problema muy común en entrevistas: Realizar una búsqueda eficiente en una lista "casi" ordenada, donde cada elemento puede estar desplazado una posición respecto a su lugar orig
⚡ Colección de Ejercicios - Capítulo 5: Exponenciación.Implementación de la función potencia $x^y$ de manera eficiente (O(log n)) utilizando la técnica de exponenciación binaria o por cuadrados (Divide y Vencer).
? Colección de Ejercicios - Capítulo 5: Backtracking. Algoritmo recursivo para generar todas las combinaciones posibles de una cadena binaria con comodines (ej: '1?0' -> '100', '110').
✖️ Colección de Ejercicios - Capítulo 5: Polinomios. Implementación básica de la multiplicación de dos polinomios representados como listas/tuplas usando bucles anidados.
? Colección de Ejercicios - Capítulo 5: Búsqueda Relativa. Algoritmo para encontrar el valor inmediatamente menor y el inmediatamente mayor a un número k dentro de una lista, gestionando los casos borde.
➕ Colección de Ejercicios - Capítulo 5: Two Pointers. Algoritmo eficiente O(n) para encontrar todas las parejas en una lista ordenada que sumen un valor S. Uso de punteros al inicio y final convergiendo.
?? Colección de Ejercicios - Capítulo 5: Algoritmos de Partición. Variante del problema de la Bandera Nacional Holandesa. Algoritmo para dividir una lista en tres partes (menores, iguales y mayores a un valor) en una sola pasada o pasadas limitadas.
? Colección de Ejercicios - Capítulo 5: Búsqueda Recursiva. Algoritmo Divide y Vencerá para encontrar el rango de índices (primera y última posición) de un elemento repetido en una lista ordenada.
?️ Colección de Ejercicios - Capítulo 5: Peak Element. Ejercicio de examen parcial. Encontrar un "pico" (elemento mayor que sus vecinos) en una lista en tiempo O(log n) utilizando búsqueda binaria.
? Colección de Ejercicios - Capítulo 5: Inversiones. Código base para el problema de contar inversiones en un array (pares donde i < j pero A[i] > A[j]), una medida de qué tan desordenada está una lista.
? Colección de Ejercicios - Capítulo 5: Punto Fijo. Algoritmo para encontrar si existe un índice i tal que A[i] == i en una lista ordenada de enteros distintos. Solución obligatoria en O(log n).
? Colección de Ejercicios - Capítulo 5: Listas Circulares. Algoritmo para encontrar cuántas veces ha sido rotada una lista ordenada (búsqueda del mínimo/pivote). Incluye apuntes sobre el análisis de complejidad con el Teorema Maestro.
0️⃣ Colección de Ejercicios - Capítulo 5: Algoritmos de Partición. Implementación del problema "Move Zeros" utilizando una estrategia de Dividir y Vencer. Enfoque: Se trata el problema como una variación del algoritmo partition del Quicksort, usando el 0