Progreso diario de LeetCode – Día 19

LeetCode día 19: soluciones con ventana deslizante para Max Consecutive Ones III y Find All Anagrams in a String. Expansión/contraer, conteo de ceros y detección de anagramas en Python y C++.

lunes, 8 de septiembre de 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

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.

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.