🚀 Aprende a programar desde CERO hasta PRO 👉 www.academia-x.com 🔥 INSTAGRAM 👉 instagram.com/programador.x 🌟 LINKEDIN 👉 www.linkedin.com/in/xavier-reyes-ochoa 📕 Mi ebook de HTML ¡GRATIS! 🔥🆓🔥 👉 www.academia-x.com/html-gratis 🖥 Mis equipos 👉 www.amazon.com/shop/programadorx
Me inspira mucho el ver qué fuiste en busca de nuevas oportunidades a otro país, sabiendo lo mínimo en programación y ahora te has convertido en todo un profesional, realmente viendo tus vídeos me dan ganas de salir adelante con lo mío, te deseo mucho éxito en todo lo que se venga, espero que todo lo que te propongas se te dé 🙏🏻
Personalmente creo que todo desarrollador debe contar con bases solidas en ciencias de la computación. Recomiendo muchísimo aprender C/C++ y Estructuras de datos & Algoritmos indiferentemente al área en que se desarrolle uno.
Estoy muy de acuerdo que eso aseguraría una calidad muy alta de cualquier proyecto web, sea una simple página o una aplicación enterprise. Excelente recomendación Fernando! Gracias por compartirla! 🙂👍🏽
Me ha explotado la cabeza 🤯 creo que hay que perfeccionar esa parte de lógica y algoritmos. Ya habia estudiado que se trata de har el codigo más eficiente y mas reducido posible y tu lo has demostrado😬. Pero como siempre que nivelazo de video 😏, contigo se aprende mucho, las bases para luego profundizará en el tema .🤓 Estás dejando Ecuador por muy alto Xavier 🇪🇨 Pdt. Podrías pasar el link de las pegatinas de la computadora, están cheverisimos y me los quiero comprar 😂
😄Como siempre, muchas gracias por tus chéveres palabras, Bryan! Los algoritmos y estructuras de datos definitivamente ayudan bastante para llegar a otro nivel en la programación. Espero que estés creciendo mucho como programador y me alegro que este video sea de ayuda. Saludos hermano! 🇪🇨
@@ProgramadorX una sugerencia evita hacer constante zoom in/out al codigo ya que tiende a desconcentrar cuando tratas de explicar los algoritmos, me refiero por ejemplo en el min 19:20 al 19:50 notaras estos zooms. Del resto muy bien explicado todo. gracias, sos un capo
Que inspiración logras transmitir con estos vídeos para un estudiante de una carrera de Letras como yo, que quiere incursionar en el mundo de la programación. Llevo tres meses estudiando JS y a veces se me complica pero nada como buscar inspiración en tu canal. Saludos desde Perú. 💻🤓
Me tocó dar clases de algoritmos y programación básica en Universidad. Este video me transportó a esa etapa inicial que me hizo querer aprender sobre este rubro. Con tus videos me sigo inspirando !
Que chévere Omar! 📚 Si, estos ejercicios pueden ser muy divertidos. 🙂 Hay algunos que definitivamente son muy complejos pero con práctica se va mejorando. Saludos!
ABRIL 2023: No entiendo absolutamente nada de lo que estás diciendo, pero me voy a esforzar para conocer este campo de la mejor forma posible, no me da miedo ser nuevo e inexperto en algo porque siempre se tiene que iniciar de algo y lo dejo aquí escrito porque es un hecho que lo aprenderé, al menos al punto de entender de que se habla aquí.
Para al que le interese, logré reducir a 2 funciones la solución lineal: for(int i=0, j=13; imax){ max = alturaPared[i]; maxLeft[i]=alturaPared[i]; }else{ maxLeft[i] = max; }
@Programador X una sugerencia evita hacer constante zoom in/out al codigo ya que tiende a desconcentrar cuando tratas de explicar los algoritmos, me refiero por ejemplo en el min 19:20 al 19:50 notaras estos zooms. Del resto muy bien explicado todo. gracias, sos un capo
8:45 Hay un error en ese desarrollo. El valor 'm' no se puede "aproximar" a 'n' y concluir un costo O(n^2). No sabemos los valores que pueden venir en el arreglo, y, por ejemplo una posible entrada es [0,3,0,50000,2]. En este caso, la solución propuesta tendría un costo de 5000 x 5, mucho mayor que n^2 (5 x 5)
Excelente observación valcron1000! 💯Esa solución parece ser menos que óptima para el caso de 50000 que mencionas. Voy a fijar este comentario para que quede más claro para la comunidad que es mejor dejarlo como mxn y no es buena idea redondear en este caso. Aprecio mucho que hayas hecho ese análisis. 🙂👍Para estas situaciones es una buena idea preguntar a un entrevistador sobre el rango de m para dar una mejor respuesta porque en el ejercicio lo dejé abierto, lo que quiere decir que en el peor de los casos podría ser hasta infinito. Qué gusto tener un programador ninja en el canal! 💻Saludos!
Que tal, buen ejercicio. Pensé la solución en una manera. De momento pensé que era la única. Es interesante ver como un mísmo problema puede tener más de una solución. Saludos.
Muy bueno interesante el video, aprender sobre las estructuras de datos y algoritmos es uno de los principios mas importantes de la programacion. Gracias por explicar FAANG. Como recomendacion para los proximos videos donde muestres codigo podrias configurar el tamaño de texto del editor a uno mayor para que se aprecie mejor. Saludos y muy bueno el material
Gracias por ver el video Luis! 💯 Tienes toda la razón y aprecio mucho tu sugerencia. Me aseguraré de que el texto sea más grande para el próximo video tutorial. 👍 Saludos!
Que chingon hermano... hago solo front end pero comienzo a resolver algoritmos y a trabajar en el back end.... de causalidad de me.mcomtre con tu video y he aprendido muchisimo gracias
Antes de ver el vídeo completo dare una solución, espero no sea la misma. Si lo pensamos se trata de una tabla en la que debemos ir eliminado filas de arriba hacia abajo y contacto solo cuando haya retención de nieve para esto realizamos lo siguiente: 1) un ciclo while que se detenga cuando el arreglo sea igual a una arreglo de ceros 2) crear una función que encuentre el máximo o máximos de una función y retorne un arreglo de los máximos, un arreglo de los índices de los máximos y el número de máximos. 3) crear un if que verifique si hay un máximo o hay más de un máximo. 4) Por último dentro del while colocamos el if: Si existe un solo máximo Ejecutamos la función para encontrar el segundo o segundos números más grandes, (esto removiendo al arreglo original el máximo) Con esta información reemplazamos el máximo por el segundo más grande (esto para que haya almenos 2 máximos) se repite el while pero con un arreglo de almenos 2 máximos, con esto pasamos a la segunda condición del if Else Si existe más de un máximo:habrá retención de nieve, si lo pensamos bien se trata de sumar arras de rectángulos con altura (máximo -2 número más grande del arreglo) Y base (índice máximo1 -indice máximo2-1), notar que la cantidad de estos rectángulos será el número de máximos -1, por eso es necesario que haya más de un máximo, una vez guardado las áreas de los rectángulos, repetimos el proceso de asignarle a los máximos el segundo número más grande, y realizando este ciclo while llegaremos a tener el arreglo de ceros y únicamente salvamos la suma de los rectángulos que es la cantidad de nieve.
Ahora veo que mi solución utiliza 3 loops, y que el de puntero es más óptimo porque no hace falta calcular un máximo de todo el arreglo es decir el recorrido termina al llegar al máximo
No tengo ni idea de muchas cosas referentes a la programación pero tu explicación fue muy clara y creo que entendí algunos conceptos, explicas muy bien
Likeeeeee! Grande Programador X! Me encantó casi no hay youtubers que resuelvan algoritmos de problemas de alto calibre como este video! Por favor sigue asi todos nos divertimos aprendiendo contigo!
Que útil y motivador me resultó el vídeo, muchas gracias, sería muy chévere que creara su propia comunidad en Discord, y charlasemos sobre temas técnicas o no técnicas de la industria.
Me alegra que te haya gustado Jhon! 🙌 Si me encantaría utilizar otra plataformas también pero no me alcanza el tiempo con el trabajo por el momento. 🙂 Por eso simplemente me enfoco en RUclips para brindar un mejor trabajo. Pero consideraré mucho tu sugerencia para un futuro. Saludos!
Buenísimo vídeo :) solo una sugerencia. Cuidado con los zoom in/out de cámara sobre todo cuando explicas el problema. Marea muchísimo 😔 ya que mientras uno está pendiente del dibujo y las anotaciones que vas haciendo, la cámara está constantemente acercándose y alejándose.
Se me ocurre (me enfoco en velocidad no en ahorro de memoria) 1.- Ordenar la lista de mayor a menor. 2.- Guardar la lista en un mapa (treemap) donde el valor es mi key y mi valor es un TreeSet de índices (estará para re iterar una sub lista para evitar un while. 3.- Recorrer la lista original. 4.- Establezco el valor máximo a 0 5.- Por cada elemento de la lista original de izquierda a derecha compruebo si es el mayor mayor. Si es mayor al máximo anterior busco en mi mapa el valor actual después busco si existe en mi treset. Si existe género una sub iteración hasta el muro (esto gracias al mantener y treeset) 6.- Ya me hice bolas y voy a tirar código... en unas horas lo pongo. recorrer la lista guardando el máximo (1 sola iteracion) guardando el índice del mayor valor y generando una sub lista recorriendo esta segunda cuando.
Mira, con el solo ordenar la lista, la complejidad minima aumentaria a O(n log(n)) asumiendo que uses un buen algoritmo para ordenar, encambio la opcion optima que se propone seria de O(n)
Gracias por ver el video, Diego! 🙌 Si, las matemáticas ayudan mucho pero no son esenciales en todos los problemas de programación. Este ejercicio en particular requirió bastantes matemáticas. 🧮 Saludos! 🙂
Me gustó el ejercicio aunque concuerdo un poco con el comentario anterior respecto a la complejidad, tal vez te falto un poco más ahondar no sólo en el Big O notación sino la definición de notación asintotica, en cuanto a la traducción, no estoy seguro que sea la técnica de los puntos sino la técnica de los dos apuntadores.. Excelente video 👍🏻
Muy buen contenido, solo me dieron mareos los zoom in / out (literal termine con nauseas jaja) supongo que tener que volver a enfocar el codigo tiene costo cuadrático para mi cerebro
Buena a tenerlo en cuenta. Consulta en necesario hacerlo en un diagrama de flujo la resolución del problema? Piden las grandes empresas o solo de frente a programarlo una vez q se encuentra la solución más óptima.?
Me gustan mucho tus videos... este ejercicios genial... Pero... podrías quitar tanto salto de zoom en los videos... estar acercando y alejando no me dejó concentrar en seguir la secuencia del codigo
Gracias por ver mis videos. 🙌 Estaba tratando de hacer algo diferente pero a mi tampoco me gustó mucho después de verlo. También me aseguraré de que las letras sean más grandes para el próximo tutorial. Aprecio tu sugerencia hruiz. 🙂 Saludos!
Increíble como siempre bro! Deberías hacer un video de como mejorar la lógica de programación o hacer una serie así resolviendo este tipo de ejercicios, sigue así compa 💪🏽🇪🇨
Hola me gusto tu vídeo, me interesa mucho el análisis de algoritmos, me gustaría que hicieras mas vídeos de este tipo, podrías compartir un poco mas de tu experiencias. Saludos desde México Próximo ingeniero en software.
Hola Ivan! Claro, con el tiempo voy a subir más videos de este tipo. 👍Te invito a que veas otros videos en mi canal en los que hablo más de mi experiencia. Saludos! 🇲🇽
Me hace acordar a mis primeros años en la facu donde, para mejorar la lógica, el profe nos daba este tipo de ejercicios para resolver. Ahora hace rato que no hago cosas así, pero es re entretenido hacerlos y más cuando tienen esa pinta de parecer fáciles y son re difíciles. Ah y para cosas como estas es que valoras haber sufrido con las clases de cálculo y algebra 😂😂😂
Al principio el objeto o la lista era [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 2 ] y hice todos los ejercicios asi y me tenia loco , ya que no me daba los resultados esperados, luego me di cuenta que habia una equivocacion, lo corregí pero no me daba tampoco, y al final del video vuelvo a ver la grafica , y habia cambiado el ultimo número de 2 por el 1, quedando hacia la lista [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 1 ] con el 1 al final , ajajajajajajaja resuelto el problema...
Bueno, yo habría identificado el primero y el segundo pico mas alto, y comenzaría a recorrer a la altura del segundo pico mas alto de la matriz, en una variable voy acumulando los cuadros equivalentes a nieve.
sos un capo , tengo 16 años y estoy aprendiendo programacion , tu eres una inspiracion para mi , cuando me convierta en un programador volvere y escribiré. #include using namespace std; int main() { cout
Tua contenidos son excelente,, tengo una pregunta, probé una forma de crear ese algoritmo con 2 variables con celdas vacias y una constate con celda llena, y cree un bucle for rellenando los espacios vacios
*@programador X, Master, Apenas estoy comenzando en esto de la programacion, Quiero Aprender Ingeniería de Software Para vivir es Austin Texas.* *Pero no tengo dinero, Como puedo aprender todo lo de este video, Y todo lo que necesita un Ingeniero de Software de forma gratuita??* *_Y Muchas Gracias por tu videos @programador X_* 💙
Hola __StarkG__! Toda esta información está en línea. Mira mi video de 'Mi Plan de Estudios` junto con 'Ruta de programador web' para tener una mejor idea. También estoy dejando recursos en las descripciones de mis videos y hay otros RUclipsrs y blogs que hacen algo como yo. 🙂 En Austin vas a encontrar muchas oportunidades. Muchos éxitos! 💯
Gracias Luis! 💯 Todo es práctica. Crea muchos proyectos, resuelve algoritmos, y practica diariamente. Esto toma tiempo así que tómalo con calma y disfruta del proceso. Muchos éxitos Luis! 🙂
Ola te veo desde Brasil en mi Mobile but su imagem no I cano"t see en mi pantalla. Tiene bueno conteúdo but. Imposible ver en la pantalla por la falta de nitidez. Vale.
Gracias por ver mis videos Silas! Estos tutoriales son difíciles de hacer para dispositivos mobiles pero me aseguraré de hacer las letras muchos más grandes la próxima vez. Mil disculpas y saludos! 🙂🇧🇷
esta bueno ver ejercicios asi y la forma que lo desarrollas y explicas, pero ese cambio de tamaño de pantalla me volvio loco, me fue imposible mantenerme concentrado. de resto gracias por el aporte
estoy empezando a estudiar para programador por mi cuenta y bueno empece por java y parece que algo entendi mas que entender aleer el codigo que has creado me encantaria saber como sabes bro un saludo desde españa eres un crak!! si tienes alguna recomendacion que me pueda ayudar a aprender bien te lo agradeceria algun libro curso o lo que sea es bienvenido !! sigue asi dandole caña que eres muy bueno tio!!
Muchas gracias spartakoFK! 💯 Puedes revisar el libro 'Cracking the coding interview' que tiene este tipo de ejercicios o puedes utilizar recursos como leetcode y hackerrank. Todo es práctica, así que resuelve muchos ejercicios diariamente. También puedes tratar de resolver este en Java. 😁 Saludos! 🇪🇸
Elkin un libro que me ayudó muchísimo fue: Fundamentos de programación: algoritmos, estructura de datos y objetos de Luis Joyanes Aguilar. Lo que hacía era leer y tratar de desarrollar las actividades en Python, que es el lenguaje que estoy aprendiendo.
Muy de acuerdo con Bladimir. Utiliza libros con ejemplos. Otro libro es Cracking the Code. Ser bueno en estos ejercicios toma mucho tiempo y práctica asi que tómate tu tiempo haciendo uno o dos ejercicios diarios. Disfruta del proceso porque realmente toma tiempo. 🙂 Saludos!
hola..!!! quisiera hacerte una consulta, soy docente de matemáticas y quisiera hacer un pizarra digital, estaba aprendiendo un poco de python, crees que pueda hacerlo en ese lenguaje de programación o que lenguaje me recomiendas, muchas gracias de antemano
Hola Ruben! Puedes hacerlo con cualquier lenguaje pero la pregunta es, en donde va a existir esta pizarra? Si es en una pagina wen, puedes utilizar Javascript. Otros lenguajes tiene otros usos. Saludos!
Me quise poner un reto y hacer el ejercicio por mi cuenta antes de ver el video, programo en python, llevo 1 mes programando, y me gustaría que me retroalimentaras. Mi análisis es el siguiente: Cuento la nieve por niveles (niveles en el eje 'y', nivel 0, nivel 1, etc..) con los espacios que hay entre cada columna. Por ejemplo: En el nivel 0 hay 3 espacios entre las comunas. En el nivel 1 hay 5 espacios entre las comunas. En el nivel 2 hay 4 espacios entre las comunas. Dando un total de 12. Nota: jugué con los datos de la lista para corroborar qué funcione. #Da una Lista de alturas de paredes, crear una función que calcule la cantidad de nieve que atrapan las paredes lista = [2,0,4,0,1,0,2,1,0,3,2,1,1,1,5,0,1,0,3] def niveles(lis): totalNieve=0 #Contador total de la nieve while(True): #Se hara un ciclo hasta que ya no haya nieve for i in range(len(lis)):#for para iterar y validar la lista con if´s if lis[0]
Que bien que te pareció fácil, takeSomeCoffee! 🙂👍 Yo lo pondría en un nivel medio a dificil por lo que la solución optima require el 'Two Pointer Technique' y require de entendimientos de matemáticas. Hay personas que son naturalmente buenas en esto y si eres una de ellas, podrás encontrar trabajos muy avanzados en este campo. 💯 Saludos y muchos éxitos!
Hola un placer escribirte, te sigo porque me gustan los problemas que planteas, pero tengo una consulta, no se si estoy en un error yo, o es cosa mia, pero cuando haces el objeto ( list ) el numero que esta al final de la lista deberia de ser 1 ? segun la grafica que colocas en el video, sigues un patron donde dices que en esa lista colocas 0 (cero) cuando no hay bloques, y colocas el numero de bloques que hay segun sea el caso, siguiendo el orden de izquierda a derecha el ultimo deberia de ser 1 , y no 2, ya que en ese espacio solo hay un bloque, por favor corrigeme, ya que los calculos a mi no me dan el resultado esperado.... gracia de antemano...
Hermano como siempre genial tu contenido, te cuento que mañana retomo una secuencia donde invito personas del sector a mi canal, se llama #compartiendoExperiencias y seria genial poder contar contigo más adelante! un saludo y nuevamente felicidades por aportar a la comunidad!
Muchas gracias Cristian! 🙂 Tu canal se ve muy bueno también. Felicitaciones! 💯 Si, en estas semanas estoy un poco ocupado pero hablemos más por Instagram para una futura colaboración. Saludos!
Tus comentarios en mis videos (justo en el dia que los publico) son la mejor manera de comunicarte conmigo. También me ayudas con el algoritmo de RUclips y tus preguntas pueden ayudar a la comunidad. 🙂 Saludos Iris!
Como dice Julio, talvéz tienen que invertir un poco más en su código y CDNs. Superficialmente puedo decir que me parecen muy buenas sus iniciativas en LATAM donde hace falta más información al día sobre la tecnología.
😂 Este ejercicio tiene una dificultad media a dificil. Así que no te preocupes Andres! Empieza con problemas fáciles, practica y poco a poco estarás resolviendo problemas más complejos. Saludos!
🚀 Aprende a programar desde CERO hasta PRO 👉 www.academia-x.com
🔥 INSTAGRAM 👉 instagram.com/programador.x
🌟 LINKEDIN 👉 www.linkedin.com/in/xavier-reyes-ochoa
📕 Mi ebook de HTML ¡GRATIS! 🔥🆓🔥 👉 www.academia-x.com/html-gratis
🖥 Mis equipos 👉 www.amazon.com/shop/programadorx
Me inspira mucho el ver qué fuiste en busca de nuevas oportunidades a otro país, sabiendo lo mínimo en programación y ahora te has convertido en todo un profesional, realmente viendo tus vídeos me dan ganas de salir adelante con lo mío, te deseo mucho éxito en todo lo que se venga, espero que todo lo que te propongas se te dé 🙏🏻
Aprecio mucho tu mensaje, Felipe! 💯 Estoy seguro que lograrás lo que te propongas también. 👍 Saludos!
Personalmente creo que todo desarrollador debe contar con bases solidas en ciencias de la computación. Recomiendo muchísimo aprender C/C++ y Estructuras de datos & Algoritmos indiferentemente al área en que se desarrolle uno.
Estoy muy de acuerdo que eso aseguraría una calidad muy alta de cualquier proyecto web, sea una simple página o una aplicación enterprise. Excelente recomendación Fernando! Gracias por compartirla! 🙂👍🏽
@@ProgramadorX gracias a ti por compartir tus experiencias con la comunidad!!!
Me ha explotado la cabeza 🤯 creo que hay que perfeccionar esa parte de lógica y algoritmos. Ya habia estudiado que se trata de har el codigo más eficiente y mas reducido posible y tu lo has demostrado😬. Pero como siempre que nivelazo de video 😏, contigo se aprende mucho, las bases para luego profundizará en el tema .🤓
Estás dejando Ecuador por muy alto Xavier 🇪🇨
Pdt. Podrías pasar el link de las pegatinas de la computadora, están cheverisimos y me los quiero comprar 😂
😄Como siempre, muchas gracias por tus chéveres palabras, Bryan! Los algoritmos y estructuras de datos definitivamente ayudan bastante para llegar a otro nivel en la programación. Espero que estés creciendo mucho como programador y me alegro que este video sea de ayuda. Saludos hermano! 🇪🇨
@@ProgramadorX una sugerencia evita hacer constante zoom in/out al codigo ya que tiende a desconcentrar cuando tratas de explicar los algoritmos, me refiero por ejemplo en el min 19:20 al 19:50 notaras estos zooms. Del resto muy bien explicado todo. gracias, sos un capo
Que inspiración logras transmitir con estos vídeos para un estudiante de una carrera de Letras como yo, que quiere incursionar en el mundo de la programación. Llevo tres meses estudiando JS y a veces se me complica pero nada como buscar inspiración en tu canal. Saludos desde Perú. 💻🤓
Me tocó dar clases de algoritmos y programación básica en Universidad. Este video me transportó a esa etapa inicial que me hizo querer aprender sobre este rubro. Con tus videos me sigo inspirando !
Que chévere Omar! 📚 Si, estos ejercicios pueden ser muy divertidos. 🙂 Hay algunos que definitivamente son muy complejos pero con práctica se va mejorando. Saludos!
ABRIL 2023: No entiendo absolutamente nada de lo que estás diciendo, pero me voy a esforzar para conocer este campo de la mejor forma posible, no me da miedo ser nuevo e inexperto en algo porque siempre se tiene que iniciar de algo y lo dejo aquí escrito porque es un hecho que lo aprenderé, al menos al punto de entender de que se habla aquí.
Para al que le interese, logré reducir a 2 funciones la solución lineal:
for(int i=0, j=13; imax){
max = alturaPared[i];
maxLeft[i]=alturaPared[i];
}else{
maxLeft[i] = max;
}
if(alturaPared[j]>max2){
max2 = alturaPared[j];
maxRight[j] = alturaPared[j];
}else{
maxRight[j] = max2;
}
}
for(int k=0; k
Gracias bro
@Programador X una sugerencia evita hacer constante zoom in/out al codigo ya que tiende a desconcentrar cuando tratas de explicar los algoritmos, me refiero por ejemplo en el min 19:20 al 19:50 notaras estos zooms. Del resto muy bien explicado todo. gracias, sos un capo
8:45 Hay un error en ese desarrollo. El valor 'm' no se puede "aproximar" a 'n' y concluir un costo O(n^2). No sabemos los valores que pueden venir en el arreglo, y, por ejemplo una posible entrada es [0,3,0,50000,2]. En este caso, la solución propuesta tendría un costo de 5000 x 5, mucho mayor que n^2 (5 x 5)
Excelente observación valcron1000! 💯Esa solución parece ser menos que óptima para el caso de 50000 que mencionas. Voy a fijar este comentario para que quede más claro para la comunidad que es mejor dejarlo como mxn y no es buena idea redondear en este caso. Aprecio mucho que hayas hecho ese análisis. 🙂👍Para estas situaciones es una buena idea preguntar a un entrevistador sobre el rango de m para dar una mejor respuesta porque en el ejercicio lo dejé abierto, lo que quiere decir que en el peor de los casos podría ser hasta infinito. Qué gusto tener un programador ninja en el canal! 💻Saludos!
@@ProgramadorX Yo aqui intentando escribir mi primer ¡Hola Mundo! y ustedes hablando de algoritmos cuanticos!!!
No entendi ni madres :c y yo apenas hice un hola mundo
@@NewPlayeracount por algo se empieza, no todos nacen sabiéndolo todo, no te desanimes
Que tal, buen ejercicio. Pensé la solución en una manera. De momento pensé que era la única. Es interesante ver como un mísmo problema puede tener más de una solución. Saludos.
Muy bueno interesante el video, aprender sobre las estructuras de datos y algoritmos es uno de los principios mas importantes de la programacion. Gracias por explicar FAANG. Como recomendacion para los proximos videos donde muestres codigo podrias configurar el tamaño de texto del editor a uno mayor para que se aprecie mejor. Saludos y muy bueno el material
Gracias por ver el video Luis! 💯 Tienes toda la razón y aprecio mucho tu sugerencia. Me aseguraré de que el texto sea más grande para el próximo video tutorial. 👍 Saludos!
Que chingon hermano... hago solo front end pero comienzo a resolver algoritmos y a trabajar en el back end.... de causalidad de me.mcomtre con tu video y he aprendido muchisimo gracias
Antes de ver el vídeo completo dare una solución, espero no sea la misma.
Si lo pensamos se trata de una tabla en la que debemos ir eliminado filas de arriba hacia abajo y contacto solo cuando haya retención de nieve para esto realizamos lo siguiente:
1) un ciclo while que se detenga cuando el arreglo sea igual a una arreglo de ceros
2) crear una función que encuentre el máximo o máximos de una función y retorne un arreglo de los máximos, un arreglo de los índices de los máximos y el número de máximos.
3) crear un if que verifique si hay un máximo o hay más de un máximo.
4) Por último dentro del while colocamos el if:
Si existe un solo máximo
Ejecutamos la función para encontrar el segundo o segundos números más grandes, (esto removiendo al arreglo original el máximo)
Con esta información reemplazamos el máximo por el segundo más grande (esto para que haya almenos 2 máximos)
se repite el while pero con un arreglo de almenos 2 máximos, con esto pasamos a la segunda condición del if
Else
Si existe más de un máximo:habrá retención de nieve, si lo pensamos bien se trata de sumar arras de rectángulos con altura (máximo -2 número más grande del arreglo)
Y base (índice máximo1 -indice máximo2-1), notar que la cantidad de estos rectángulos será el número de máximos -1, por eso es necesario que haya más de un máximo, una vez guardado las áreas de los rectángulos, repetimos el proceso de asignarle a los máximos el segundo número más grande, y realizando este ciclo while llegaremos a tener el arreglo de ceros y únicamente salvamos la suma de los rectángulos que es la cantidad de nieve.
Ahora veo que mi solución utiliza 3 loops, y que el de puntero es más óptimo porque no hace falta calcular un máximo de todo el arreglo es decir el recorrido termina al llegar al máximo
No tengo ni idea de muchas cosas referentes a la programación pero tu explicación fue muy clara y creo que entendí algunos conceptos, explicas muy bien
Likeeeeee! Grande Programador X! Me encantó casi no hay youtubers que resuelvan algoritmos de problemas de alto calibre como este video! Por favor sigue asi todos nos divertimos aprendiendo contigo!
Aprecio mucho tu mensaje Luis! 🙌 Si, poco a poco sacaré más videos como este. 🙂 Un gran saludo!
Que útil y motivador me resultó el vídeo, muchas gracias, sería muy chévere que creara su propia comunidad en Discord, y charlasemos sobre temas técnicas o no técnicas de la industria.
Me alegra que te haya gustado Jhon! 🙌 Si me encantaría utilizar otra plataformas también pero no me alcanza el tiempo con el trabajo por el momento. 🙂 Por eso simplemente me enfoco en RUclips para brindar un mejor trabajo. Pero consideraré mucho tu sugerencia para un futuro. Saludos!
@@ProgramadorX totalmente comprensible, igualmente gracias por esos pedazos de vídeos, un abrazo
Buenísimo vídeo :) solo una sugerencia. Cuidado con los zoom in/out de cámara sobre todo cuando explicas el problema. Marea muchísimo 😔 ya que mientras uno está pendiente del dibujo y las anotaciones que vas haciendo, la cámara está constantemente acercándose y alejándose.
Coincido, me costo mucho verlo por esa razon, tuve que hacer un esfuerzo extra y aun asi me perdia =/
Se me ocurre (me enfoco en velocidad no en ahorro de memoria)
1.- Ordenar la lista de mayor a menor.
2.- Guardar la lista en un mapa (treemap) donde el valor es mi key y mi valor es un TreeSet de índices (estará para re iterar una sub lista para evitar un while.
3.- Recorrer la lista original.
4.- Establezco el valor máximo a 0
5.- Por cada elemento de la lista original de izquierda a derecha compruebo si es el mayor mayor. Si es mayor al máximo anterior busco en mi mapa el valor actual después busco si existe en mi treset. Si existe género una sub iteración hasta el muro (esto gracias al mantener y treeset)
6.- Ya me hice bolas y voy a tirar código... en unas horas lo pongo.
recorrer la lista guardando el máximo (1 sola iteracion) guardando el índice del mayor valor y generando una sub lista recorriendo esta segunda cuando.
Me di cuenta que con un solo bucle y acumulando alturas podía calcular el dato de mejor manera.
Mira, con el solo ordenar la lista, la complejidad minima aumentaria a O(n log(n)) asumiendo que uses un buen algoritmo para ordenar, encambio la opcion optima que se propone seria de O(n)
Excelente ejercicio. Muchas gracias por compartir.
No hay de que, Hiram! Espero que sea útil! 🙂👌🏽
Gracias x tomarte el tiempo y el esfuerzo 😃
Muy genio! Somos tus fans!
De una manera muy interactiva, muestras lo importante que son las matemáticas. :)
Gracias por ver el video, Diego! 🙌 Si, las matemáticas ayudan mucho pero no son esenciales en todos los problemas de programación. Este ejercicio en particular requirió bastantes matemáticas. 🧮 Saludos! 🙂
Te admiro muchísimo bro, me inspiras demasiado. Saludos desde 🇨🇷 Costa Rica 🇨🇷 Gracias por todo, seguí adelante que vas a crecer mucho. 😃
Muchas Deivid! 🙌Estoy seguro que seguiremos creciendo juntos. Saludos! 🇨🇷
Pura vida deivid yo también soy 🇨🇷
@@cjseven077 pura vida compa 🇨🇷😃
Me gustó el ejercicio aunque concuerdo un poco con el comentario anterior respecto a la complejidad, tal vez te falto un poco más ahondar no sólo en el Big O notación sino la definición de notación asintotica, en cuanto a la traducción, no estoy seguro que sea la técnica de los puntos sino la técnica de los dos apuntadores.. Excelente video 👍🏻
Un crack brother, y si estaba fuerte inclusive para alguien experimentado.... Gracias por el tuto
Si, la última solución consumió muchas calorias! 😂 Gracias por ver el video Alex. Saludos!
Mas videosde resoluciones como esta!!!! Te felicito por el contenido!!!!!
Muy buen contenido, solo me dieron mareos los zoom in / out (literal termine con nauseas jaja) supongo que tener que volver a enfocar el codigo tiene costo cuadrático para mi cerebro
*Vamos a salir a caminar.*
Los de la entrevista técnica D:
Buena a tenerlo en cuenta. Consulta en necesario hacerlo en un diagrama de flujo la resolución del problema? Piden las grandes empresas o solo de frente a programarlo una vez q se encuentra la solución más óptima.?
Me gustan mucho tus videos... este ejercicios genial... Pero... podrías quitar tanto salto de zoom en los videos... estar acercando y alejando no me dejó concentrar en seguir la secuencia del codigo
Gracias por ver mis videos. 🙌 Estaba tratando de hacer algo diferente pero a mi tampoco me gustó mucho después de verlo. También me aseguraré de que las letras sean más grandes para el próximo tutorial. Aprecio tu sugerencia hruiz. 🙂 Saludos!
@@ProgramadorX un poco más de cerca, para poder ver mejor el código, por favor.
¡¡¡Buenísimo!!!!
Creo que es posible reducir aún mas la complejidad del problema con recursividad
Eres uno de mis modelos a seguir Bro. Buen día
13:48 escuche ese soundtrack y me asuste jajaja, pense que tenia otra pagina abierta.
yo lo logre sin ver tu video pero me tomo hacerlo en 42 lineas de codigo, Soy estudiante de Soy Henry
Increíble como siempre bro! Deberías hacer un video de como mejorar la lógica de programación o hacer una serie así resolviendo este tipo de ejercicios, sigue así compa 💪🏽🇪🇨
Hola me gusto tu vídeo, me interesa mucho el análisis de algoritmos, me gustaría que hicieras mas vídeos de este tipo, podrías compartir un poco mas de tu experiencias.
Saludos desde México
Próximo ingeniero en software.
Hola Ivan! Claro, con el tiempo voy a subir más videos de este tipo. 👍Te invito a que veas otros videos en mi canal en los que hablo más de mi experiencia. Saludos! 🇲🇽
@@ProgramadorX sigo todos tus videos, es importante aprender de tus conocimientos y aplicarlos en mi dia dia. por cierto estudio ingeniero de sotfware
Me hace acordar a mis primeros años en la facu donde, para mejorar la lógica, el profe nos daba este tipo de ejercicios para resolver. Ahora hace rato que no hago cosas así, pero es re entretenido hacerlos y más cuando tienen esa pinta de parecer fáciles y son re difíciles.
Ah y para cosas como estas es que valoras haber sufrido con las clases de cálculo y algebra 😂😂😂
Buen video me interesa XD esto es lo que siempre busco 🙌
Al principio el objeto o la lista era [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 2 ] y hice todos los ejercicios asi y me tenia loco , ya que no me daba los resultados esperados, luego me di cuenta que habia una equivocacion, lo corregí pero no me daba tampoco, y al final del video vuelvo a ver la grafica , y habia cambiado el ultimo número de 2 por el 1, quedando hacia la lista [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 1 ] con el 1 al final , ajajajajajajaja resuelto el problema...
Recomiendas algún libro o alguno de tus cursos que ayuden para mejorar en este tipo de ejercicios ?
Bueno, yo habría identificado el primero y el segundo pico mas alto, y comenzaría a recorrer a la altura del segundo pico mas alto de la matriz, en una variable voy acumulando los cuadros equivalentes a nieve.
sos un capo , tengo 16 años y estoy aprendiendo programacion , tu eres una inspiracion para mi , cuando me convierta en un programador volvere y escribiré.
#include
using namespace std;
int main()
{
cout
😁 Excelente Victor! Estoy seguro que con con esfuerzo lograrás tus metas! 💯💻 Saludos!
para que seniority es este challenge? no creo que sea para un jr o ssr
Muy buen video , porfavor suba más de estos.
Gracias Dyland! 🙂Poco a poco subiré más de este estilo. Saludos!
Tua contenidos son excelente,, tengo una pregunta, probé una forma de crear ese algoritmo con 2 variables con celdas vacias y una constate con celda llena, y cree un bucle for rellenando los espacios vacios
Este es el link al problema por si alguien quiere intentarlo:
leetcode.com/problems/trapping-rain-water/
Si! 🙌 Leetcode tiene muchos buenos algoritmos incluyendo este. Gracias por compartir, Cherry Bomb! 💯
❤❤ la nena y la nieve 😘😘
🙂👍🏽❄
Gracias, Eres mi inspiración programador X, un abrazo
Gracias por tus palabras Juan Carlos! 😁❤️ Abrazos!
Solo quiero saber en dónde estás codificando
excelente contenido para programadores
🙂🙌👍💻
15:50 AVALANCHA!!! 🤣🤣
😁❄️
*@programador X, Master, Apenas estoy comenzando en esto de la programacion, Quiero Aprender Ingeniería de Software Para vivir es Austin Texas.*
*Pero no tengo dinero, Como puedo aprender todo lo de este video, Y todo lo que necesita un Ingeniero de Software de forma gratuita??*
*_Y Muchas Gracias por tu videos @programador X_* 💙
Hola __StarkG__! Toda esta información está en línea. Mira mi video de 'Mi Plan de Estudios` junto con 'Ruta de programador web' para tener una mejor idea. También estoy dejando recursos en las descripciones de mis videos y hay otros RUclipsrs y blogs que hacen algo como yo. 🙂 En Austin vas a encontrar muchas oportunidades. Muchos éxitos! 💯
@@ProgramadorX *WOW MUCHAS GRACIAS, hasta ahora solo usaba "Solo Learn" Gracias por existir* 💛
Hola! comparto mi solución con python:
lista = [0, 1, 0, 2, 1, 0, 3, 2, 1, 1, 1, 5, 0, 3, 0, 0, 1, 0, 2, 0, 0]
lista_maximos_1 = []
lista_maximos_2 = []
maximo_1 = 0
maximo_2 = 0
punto_de_corte = lista.index(max(lista)) + 1
lista_reducida_1 = lista[:punto_de_corte]
for i in lista_reducida_1:
if i > maximo_1:
maximo_1 = i
lista_maximos_1.append(maximo_1)
else:
lista_maximos_1.append(maximo_1)
print(lista_maximos_1)
print(lista_reducida_1)
lista_reducida_2 = reversed(lista[punto_de_corte:])
for i in lista_reducida_2:
if i > maximo_2:
maximo_2 = i
lista_maximos_2.append(maximo_2)
else:
lista_maximos_2.append(maximo_2)
print(lista_maximos_2)
print(lista_reducida_2)
rta = sum(lista_maximos_1) + sum(lista_maximos_2) - sum(lista)
print("Cantidad de unidades de nieve: " + str(rta))
Hermano que hay de programar en R , crees que es bueno? Que piensas del futuro de las finanzas y la programacion?;
Muy buen video y buena explicación nuevo sub
Me gusto mucho el vídeo, ahora a practicar como loco
Gracias Dafk Ultra! 🙂 Si, definitivamente la práctica es todo. Saludos!
Muy bueno tus videos, quiero recomendación para medir mi logica o que debo de hacer para mejorarlo, recien empiezo en esto de la programación
Gracias Luis! 💯 Todo es práctica. Crea muchos proyectos, resuelve algoritmos, y practica diariamente. Esto toma tiempo así que tómalo con calma y disfruta del proceso. Muchos éxitos Luis! 🙂
Me encantó el vídeo, ¡Nuevo sub!
Muchas gracias Edwin! 🙂 Bienvenido a esta comunidad de programadores. Saludos!
Ola te veo desde Brasil en mi Mobile but su imagem no I cano"t see en mi pantalla.
Tiene bueno conteúdo but. Imposible ver en la pantalla por la falta de nitidez. Vale.
Gracias por ver mis videos Silas! Estos tutoriales son difíciles de hacer para dispositivos mobiles pero me aseguraré de hacer las letras muchos más grandes la próxima vez. Mil disculpas y saludos! 🙂🇧🇷
genial tu metologia y tu solucion , donde puedo conseguir mas algoritmos asi
Gracias Mario! Deje unos links en la descripción para practicar más de estos algoritmos. Saludos! 🙂
¿Algún libro que recomendes?
Hola Eduardo! El libro, Cracking the Code es el más utilizado por la industria para este tipo de algoritmos. 📚 Muchos éxitos! 👍🏽
Gracias@@ProgramadorX , estaré buscando el libro. 😁
que buen video. bastante interesante.
Gracias por verlo, Jairo! 👍
Que buen vídeo, saludos desde Paraguay : D
Gracias por verlo. 🙌 Saludos Oscar! 🇵🇾
muy buen tutorial gracias
No hay de que, Luis! Saludos! 🙂
Eres Un Crack Bro!!
excelente video Bro, saludos desde Q.Roo, México, Que editor de texto usas?
Muchas gracias por el video, saludos
Con gusto, Luis! 🙂
esta bueno ver ejercicios asi y la forma que lo desarrollas y explicas, pero ese cambio de tamaño de pantalla me volvio loco, me fue imposible mantenerme concentrado. de resto gracias por el aporte
estoy empezando a estudiar para programador por mi cuenta y bueno empece por java y parece que algo entendi mas que entender aleer el codigo que has creado me encantaria saber como sabes bro un saludo desde españa eres un crak!! si tienes alguna recomendacion que me pueda ayudar a aprender bien te lo agradeceria algun libro curso o lo que sea es bienvenido !! sigue asi dandole caña que eres muy bueno tio!!
Muchas gracias spartakoFK! 💯 Puedes revisar el libro 'Cracking the coding interview' que tiene este tipo de ejercicios o puedes utilizar recursos como leetcode y hackerrank. Todo es práctica, así que resuelve muchos ejercicios diariamente. También puedes tratar de resolver este en Java. 😁 Saludos! 🇪🇸
Hola, sabes de alguna pagina donde pueda acceder a ejercicios como este para poner en practica? gracias!
Leer code, hackerank, algo expert
@@ProgramadorX Gracias! justo arranque con hackerrank
Me estoy pegando un viaje con tantos zoomIn y zoomOut xd
Como hago para mejorar mi logística de programación y cómo mejorar la forma de resolver algoritmo?
Elkin un libro que me ayudó muchísimo fue: Fundamentos de programación: algoritmos, estructura de datos y objetos de Luis Joyanes Aguilar.
Lo que hacía era leer y tratar de desarrollar las actividades en Python, que es el lenguaje que estoy aprendiendo.
Muy de acuerdo con Bladimir. Utiliza libros con ejemplos. Otro libro es Cracking the Code. Ser bueno en estos ejercicios toma mucho tiempo y práctica asi que tómate tu tiempo haciendo uno o dos ejercicios diarios. Disfruta del proceso porque realmente toma tiempo. 🙂 Saludos!
@@ProgramadorX Sabes cuál es el autor? porque veo muchos libros con titulos muy parecidos.
Excelente!!
Gracias por ver mis videos! 🙂🙌
Interesante video, saludos!
Gracias! 🙂👍 Saludos!
Excelente.
Gracias Jefferson! 🙂👍
hola..!!! quisiera hacerte una consulta, soy docente de matemáticas y quisiera hacer un pizarra digital, estaba aprendiendo un poco de python, crees que pueda hacerlo en ese lenguaje de programación o que lenguaje me recomiendas, muchas gracias de antemano
Hola Ruben! Puedes hacerlo con cualquier lenguaje pero la pregunta es, en donde va a existir esta pizarra? Si es en una pagina wen, puedes utilizar Javascript. Otros lenguajes tiene otros usos. Saludos!
@@ProgramadorX muchas gracias por responderme, quería que sea de escritorio
Me quise poner un reto y hacer el ejercicio por mi cuenta antes de ver el video, programo en python, llevo 1 mes programando, y me gustaría que me retroalimentaras.
Mi análisis es el siguiente:
Cuento la nieve por niveles (niveles en el eje 'y', nivel 0, nivel 1, etc..) con los espacios que hay entre cada columna. Por ejemplo:
En el nivel 0 hay 3 espacios entre las comunas.
En el nivel 1 hay 5 espacios entre las comunas.
En el nivel 2 hay 4 espacios entre las comunas.
Dando un total de 12.
Nota: jugué con los datos de la lista para corroborar qué funcione.
#Da una Lista de alturas de paredes, crear una función que calcule la cantidad de nieve que atrapan las paredes
lista = [2,0,4,0,1,0,2,1,0,3,2,1,1,1,5,0,1,0,3]
def niveles(lis):
totalNieve=0 #Contador total de la nieve
while(True): #Se hara un ciclo hasta que ya no haya nieve
for i in range(len(lis)):#for para iterar y validar la lista con if´s
if lis[0]
15:45 Estaba en fullscreen y pensé que mi computadora se había malogrado
😂 Me alegra que tu computadora no se haya malogrado!
Este seria un algoritmo de nivel facil, no?, por que la verdad a mi me lo pareció y eso que aun no llego a la parte de Algoritmos en JS.
Que bien que te pareció fácil, takeSomeCoffee! 🙂👍 Yo lo pondría en un nivel medio a dificil por lo que la solución optima require el 'Two Pointer Technique' y require de entendimientos de matemáticas. Hay personas que son naturalmente buenas en esto y si eres una de ellas, podrás encontrar trabajos muy avanzados en este campo. 💯 Saludos y muchos éxitos!
Ya apareció el Mark Zuckerberg 😑😑
Hola un placer escribirte, te sigo porque me gustan los problemas que planteas, pero tengo una consulta, no se si estoy en un error yo, o es cosa mia, pero cuando haces el objeto ( list ) el numero que esta al final de la lista deberia de ser 1 ? segun la grafica que colocas en el video, sigues un patron donde dices que en esa lista colocas 0 (cero) cuando no hay bloques, y colocas el numero de bloques que hay segun sea el caso, siguiendo el orden de izquierda a derecha el ultimo deberia de ser 1 , y no 2, ya que en ese espacio solo hay un bloque, por favor corrigeme, ya que los calculos a mi no me dan el resultado esperado.... gracia de antemano...
En el minuto 2:02 menciona (con una anotación) que sí debería ser 1 el número final de la lista.
Hermano como siempre genial tu contenido, te cuento que mañana retomo una secuencia donde invito personas del sector a mi canal, se llama #compartiendoExperiencias y seria genial poder contar contigo más adelante! un saludo y nuevamente felicidades por aportar a la comunidad!
Muchas gracias Cristian! 🙂 Tu canal se ve muy bueno también. Felicitaciones! 💯 Si, en estas semanas estoy un poco ocupado pero hablemos más por Instagram para una futura colaboración. Saludos!
@@ProgramadorX claro que sí y tranquilo que podríamos mirarlo para futuro no problem, un abrazo
Del 00:05 al 00:12 típico estereotipo de un programador XD, Felicidades por los 30k
😂 Si! Muchas gracias Leugim! Seguimos creciendo! 💯
Hola, como puedo contactarte
Me encantan tus videos
Tus comentarios en mis videos (justo en el dia que los publico) son la mejor manera de comunicarte conmigo. También me ayudas con el algoritmo de RUclips y tus preguntas pueden ayudar a la comunidad. 🙂 Saludos Iris!
chamo , no entendi un coñooo :c y pege todo el codigo y no funcionaba ajjajajaj no se nada de programacion :c (no se como ejecutar eso en la consola
Porque no deja la imagen quieta cuando esta codificando....super cansón la aleja y vuelve y la acerca que feo...
Disculpa Yeisson! Evitaré hacer esto en mis futuros videos. Toma la vida con calma, todos cometemos errores. 🙂
Quería enfocar en la imagen, pero ver que cada segundo hay un corte de acercamiento es un fastidio
😬 Lamentablemente no puedo cambiarlo una vez subido pero evito esto en próximos videos.
Mi solución en php.
10:27
Ahora entiendo porque EDteam y Platzy son tan lentas eso me da desconfianza sobre los cursos 😂
Son empresas pequeñas todavía a comparación de compañias como RUclips. Además creo que Edteam ni siquiera inversión tiene.
Como dice Julio, talvéz tienen que invertir un poco más en su código y CDNs. Superficialmente puedo decir que me parecen muy buenas sus iniciativas en LATAM donde hace falta más información al día sobre la tecnología.
Eres ecuatoriano verdad por qué tines el acento de los quiteños
Si Luis. Del valle de los Chillos! 🙂🇪🇨
Me enorgullezes 😎🇪🇨
Nice
🙂👍
Primer comentario
🙌🏽
me gusto pero no entendi nada jajaja
😂 Este ejercicio tiene una dificultad media a dificil. Así que no te preocupes Andres! Empieza con problemas fáciles, practica y poco a poco estarás resolviendo problemas más complejos. Saludos!