Problemas resueltos: #1004 Max Consecutive Ones III y #438 Find All Anagrams in a String
Progreso Diario de LeetCode – Día 19. Continuo mi serie diaria trabajando la tecnica sliding window con dos retos clasicos: maximizar la racha de unos permitiendo hasta k flips y encontrar todos los indices iniciales de anagramas en una cadena. Ambos refuerzan el patron crecer la ventana, encoger cuando es invalida y actualizar el resultado.
Lo que aprendi: 1 La ventana se expande con el puntero derecho y se contrae solo cuando hay mas de k ceros para mantener siempre una ventana valida. 2 Para los anagramas, mantener contadores de frecuencia de p y de la ventana de s permite detectar coincidencias en tiempo lineal. 3 El template de sliding window es universal y reusable.
#1004 Max Consecutive Ones III en Python
class Solution: def longestOnes(self, nums: List[int], k: int) -> int: n, right = len(nums), 0 left = 0 temp_k = k max_temp = 0 while right < n: if nums[right] == 0: temp_k -= 1 while temp_k < 0: if nums[left] == 0: temp_k += 1 left += 1 max_temp = max(max_temp, right - left + 1) right += 1 return max_temp
#1004 Max Consecutive Ones III en C plus plus
class Solution { public: int longestOnes(vector<int>& nums, int k) { int n = nums.size(); int left = 0, right = 0; int temp_k = k; int max_temp = 0; while (right < n) { if (nums[right] == 0) { temp_k--; } while (temp_k < 0) { if (nums[left] == 0) { temp_k++; } left++; } max_temp = max(max_temp, right - left + 1); right++; } return max_temp; } };
Complejidad: Tiempo O n y Espacio O 1.
#438 Find All Anagrams in a String en Python
class Solution: def findAnagrams(self, s: str, p: str) -> List[int]: n, right = len(s), len(p) if right > n: return [] need = Counter(p) window = Counter(s[:right]) start_index = [] if need == window: start_index.append(0) for i in range(right, n): window[s[i]] += 1 left_c = s[i - right] window[left_c] -= 1 if window[left_c] == 0: del window[left_c] if window == need: start_index.append(i - right + 1) return start_index
#438 Find All Anagrams in a String en C plus plus
class Solution { public: vector<int> findAnagrams(string s, string p) { int n = s.size(); int m = p.size(); if (m > n) return {}; vector<int> need(26, 0), window(26, 0); for (char c : p) need[c - 97]++; vector<int> res; int left = 0, right = 0; while (right < n) { window[s[right] - 97]++; right++; if (right - left == m) { if (window == need) res.push_back(left); window[s[left] - 97]--; left++; } } return res; } };
Complejidad: Tiempo O n y Espacio O 26 aproximado a O 1.
Logros del dia: implemente la expansion y contraccion de ventana para maximizar unos con flips y detecte indices de anagramas mediante matching de frecuencias en Python y C plus plus.
Resumen 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.
Sobre Q2BSTUDIO: en Q2BSTUDIO desarrollamos software a medida y aplicaciones a medida con calidad de producto y velocidad de startup, apoyados por inteligencia artificial y agentes IA para automatizar procesos y acelerar la entrega de valor. Si buscas crear una plataforma solida y escalable, descubre nuestro servicio de desarrollo de aplicaciones y software a medida para web y movil. Ademas, integramos modelos de ia para empresas con auditorias de ciberseguridad, servicios cloud aws y azure, y servicios inteligencia de negocio con power bi. Si tu roadmap tecnico incluye modelos generativos, orquestacion con agentes IA y despliegues seguros, consulta tambien nuestra oferta de inteligencia artificial aplicada a negocio.
Como encaja este aprendizaje con Q2BSTUDIO: la tecnica sliding window es un ejemplo de pensamiento algoritimico que aplicamos en proyectos reales de software a medida, desde analisis de flujos en tiempo real hasta deteccion de patrones en datos. Combinamos buenas practicas de ingenieria con pipelines de datos y seguridad por diseno para que tus soluciones en cloud aws o azure sean eficientes, seguras y medibles con power bi.
Seguire publicando soluciones diarias en Python y C plus plus cubriendo arrays, sliding window, linked lists y arboles mientras incorporo patrones que usamos en proyectos de clientes de alto impacto. Si te interesa acelerar tu producto mediante ia para empresas, ciberseguridad y automatizacion, hablemos.