Problemas resueltos: #1004 Max Consecutive Ones III y #438 Find All Anagrams in a String. Día 19 de mi serie diaria sobre ventana deslizante centrada en maximizar unos con hasta k cambios y en hallar todos los índices donde aparecen anagramas.
Qué aprendí
- En Max Consecutive Ones III, la ventana crece con el puntero derecho y se contrae con el izquierdo cuando la ventana supera k ceros. Así mantenemos siempre la ventana válida más larga.
- En Find All Anagrams in a String, comparar las frecuencias del patrón p y de la ventana actual de s permite detectar anagramas en tiempo lineal.
- Patrón esencial de ventana deslizante: expandir, comprobar validez, contraer cuando deja de ser válida y actualizar el resultado.
#1004 Max Consecutive Ones III
Idea: dos punteros y conteo de ceros. Al mover right, si entra un 0, reducimos el presupuesto de cambios k. Si k cae por debajo de 0, movemos left hasta expulsar un 0 para recuperar validez. En cada paso, actualizamos la longitud máxima right - left + 1.
Complejidad: O(n) tiempo y O(1) espacio.
#438 Find All Anagrams in a String
Idea: usar un contador de frecuencias del patrón p y mantener otro de la ventana deslizante de tamaño len(p) sobre s. Al avanzar la ventana, añadimos el nuevo carácter por la derecha y retiramos el que sale por la izquierda. Cuando ambos contadores coinciden, el índice de inicio es un anagrama válido.
Notas de implementación: en Python es natural con Counter, y en C++ se puede usar un vector de 26 enteros para letras minúsculas. La comparación de vectores es O(26), constante.
Complejidad: O(n) tiempo y O(1) espacio.
Logros del día: perfeccioné la técnica de expansión y contracción de la ventana para maximizar la racha de unos con flips y localicé todos los índices de anagramas con emparejamiento de frecuencias en Python y C++.
Recap de complejidad: Max Consecutive Ones III O(n) tiempo y O(1) espacio. Find All Anagrams in a String O(n) tiempo y O(1) espacio.
Progreso diario de LeetCode – Día 19: sigo documentando soluciones en Python y C++ sobre arrays, ventana deslizante, listas enlazadas y árboles. Si te interesan la resolución sistemática de problemas y las buenas prácticas, te invito a seguir esta serie.
Sobre Q2BSTUDIO: somos una empresa de desarrollo de software con foco en aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si tu organización quiere convertir algoritmos como la ventana deslizante en productos reales y escalables, podemos ayudarte desde la idea hasta la puesta en producción.
Descubre cómo transformamos requisitos complejos en soluciones robustas con nuestra experiencia en aplicaciones a medida y potencia tus casos de uso con nuestras capacidades de inteligencia artificial para empresas. También impulsamos tu analítica con power bi y optimizamos tu infraestructura con servicios cloud aws y azure, todo bajo un marco de ciberseguridad y pentesting de alto nivel.
Si buscas acelerar tu roadmap tecnológico o automatizar procesos con IA y agentes IA, hablemos. En Q2BSTUDIO unimos ingeniería, datos y producto para crear ventajas competitivas medibles.