Al igual que en el módulo anterior de dos apuntadores, ahora vamos a poner en práctica todo lo que hemos aprendido durante este módulo con algunos retos. ¡Empecemos!
Espero tus soluciones en los aportes. 😄
1. Máxima Cantidad de 1s Consecutivos
Dado un arreglo de valores binarios y un entero k, encuentra el máximo número de 1s consecutivos. Puedes cambiar k 0s por el valor 1.
Ejemplo 1:
# Entrada: nums =[1,1,1,0,0,0,1,1,1,0], k =2# Salida: 6
Explicación: [1,1,1,0,0,++1,1,1,1,1,1++]
Los números en negrita se han pasado de 0 a 1. La submatriz más larga está subrayada.
Ejemplo 2:
# Entrada: nums =[0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,1], k =3# Salida:10
Explicación: [0,0,++1,1,1,1,1,1,1,1,1,1++,0,0,0,1,1,1,1]
Los números en negrita fueron volteados de 0 a 1. El sub-arreglo más largo está subrayado.
2. Subcadena más larga sin caracteres repetidos
Dada una cadena de caracteres, encuentra la longitud de la subcadena más larga sin repetir caracteres.
Ejemplo 1:
# Entrada: s ="abcabcbb"# Salida:3
Explicación: La respuesta es "abc", con la longitud de 3.
Ejemplo 2:
# Entrada: s ="bbbbb"# Salida:1
Explicación: La respuesta es "b", con la longitud de 1.
3. Subcadena más larga (reemplazo de k caracteres)
Dada una cadena s y un número entero k. Devuelve la longitud de la subcadena más larga que contenga la misma letra de forma consecutiva. Donde puedes cambiar k caracteres de la cadena por otro caracter.
Ejemplo 1:
# Entrada: s ="ABAB", k =2# Salida:4
Explicación: Sustituir las dos "A" por dos "B" o viceversa.
Ejemplo 2:
# Entrada: s ="AABABBA", k =1# Salida:4
Explicación: Se sustituye la 'A' del medio por la 'B' y se forma "AABBBBA".
La subcadena "BBBB" tiene las letras repetidas más largas, que son 4.
4. Encontrar todos los anagramas de una cadena
Dadas dos cadenas s y p, devuelva un arreglo con todos los índices de inicio de los anagramas de p en s. Puede devolver la respuesta en cualquier orden.
Un anagrama es una palabra o frase que se forma reordenando las letras de otra palabra o frase, normalmente utilizando todas las letras originales exactamente una vez.
Ejemplo 1:
# Entrada: s ="cbaebabacd", p ="abc"# Salida:[0,6]
Explicación:
La subcadena con índice inicial = 0 es "cba", que es un anagrama de "abc".
La subcadena con índice inicial = 6 es "bac", que es un anagrama de "abc".
Ejemplo 2:
# Entrada: s ="abab", p ="ab"# Salida:[0,1,2]
Explicación:
La subcadena con índice inicial = 0 es "ab", que es un anagrama de "ab".
La subcadena con índice inicial = 1 es "ba", que es un anagrama de "ab".
La subcadena con índice inicial = 2 es "ab", que es un anagrama de "ab".
Coincido contigo en que el ejemplo y la explicación no concuerdan, sin embargo eso de reemplazarlos y no agregarlos debe ser solo para la explicación, porque:
En el ejemplo 1:
nums = [1,1,1,0,0,0,1,1,1,0], k = 2
Incluso la salida con la solución que está en la siguiente sección(25 Soluciones), da como resultado 5, por ejemplo [1,1,1,0,0,1,1,1,1,1] puesto que solo se pueden reemplazar dos 0 por 1. En la explicación Explicación: [1,1,1,0,0,1,1,1,1,1,1] le ha aumentado un 1 demás.
En el ejemplo 2:
nums = [0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,1], k = 3
Con la solución también de la siguiente sección, la salida si es 10, solo que en la explicación no concuerdan las posiciones de los 1 y 0 como estaban originalmente, [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1], como deben ser concurrentes y solo se pueden reemplazar tres 0 por 1, la representación a la respuesta sería [0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1].
Este sistema de comentario es tan cerrado. ¿Por qué no puedo poner el link al ejercicio de leetcode? cuando es claro que es un copy-pase traducido de ese portal.
Cada vez me doy cuenta de lo pobre que hace Platzi las cosas. El objetivo es aprender y aquí hay muchas cosas que bloquean el aprendizaje.
¿Que no se fijaron que cuando dice "los números en negrita" se están refiriendo a la explicación? Nada de ese texto está en negrita, siendo que en leetcode si se aprecia bien ...
Son ejercicios tradicionales de programación que no solamente están en leetcode. Al margen de que sean o no un copy paste de otro lugar lo importante es entender y aplicar el concepto, como si fuera una receta de cocina; no vas a pedirle a tu maestro chef que te enseñe cocina con solo recetas originales de él. En mi caso encontré mejores explicaciones a varios de estos algoritmos en youtube, nuestra joven y bella profe no tiene mucho don de palabra
let s =[1,1,0,1,1,1];functionventanaDeslizante(){let maxL =0;let maxG =0;for(let i =0; i < s.length; i++){if(s[i]===1){ maxL++ maxG =Math.max(maxL, maxG)}else{ maxL =0;}}return maxG;}ventanaDeslizante();
Subcadena más larga (reemplazo de k caracteres) : Mi solución solo funcionó para los ejemplos de la clase, cuando quise probar más se rompio 🫠, investigue, y era mi k me faltaba parte de lógica
Encontrar todos los anagramas de una cadena, mi solución solo daba parte de lo esperado, me toco con ayuda, me toca practicar más