RESUELVO el PROBLEMA que hice en MI PRIMERA ENTREVISTA como INGENIERO DE SOFTWARE

Ғылым және технология

Consigue mi curso en MasterMind! 🚀 bit.ly/3kr4bTc
Seguimos viendo más problemas de entrevistas de trabajo para posiciones de desarrollador o ingeniero de software. Esta vez, con Árboles!
👾 Redes sociales 👾
► Twitter: / bettatech
► Instagram: / betta_tech
► Canal Secundario: / @forkdebettatech
► Slack: bit.ly/33gaDDM
👨🏼‍🏫 MIS CURSOS 👨🏼‍🏫
👽 Curso de iniciación a la programación con JavaScript:
► bit.ly/3kr4bTc
👕 MERCHANDISING DEL CANAL:
► Tienda KZread: / bettatech
► Tienda Teespring: teespring.com/stores/bettatec...
⭐️ AFILIADOS ⭐️
🎁 7% Descuento en HOSTINGER (Código BETTATECH)
► www.hostg.xyz/aff_c?offer_id=...
🧠 Autocompletado con IA (Kite)
► www.kite.com/get-kite/?...
🐾 MacPaw (CleanMyMacX):
► macpaw.audw.net/c/2523912/941...
🎵 TODA la música es de EpidemicSound:
► www.epidemicsound.com/referra...
✉️ CONTACTO PROFESIONAL:
► Respuesta no garantizada:
bettatechyt@gmail.com
📚 LIBROS 📚
Design Patterns
► amzn.to/39XuQlq
Head First Design Patterns
► amzn.to/2uq6XUq
Refactoring
► amzn.to/2SQnf2c
Clean Architecture
► amzn.to/3bZVonJ
Clean Code
► amzn.to/32WVKq3
Introduction to Algorithms
► amzn.to/34SyVFP
Cracking the Coding Interview
► amzn.to/2QkdwC6
⏱ ÍNDICE:
• 0:00 - Introducción
• 1:34 - Árboles
• 2:54 - El Problema
• 3:31 - Implementando la solución
• 4:07 - Dibujitos
• 6:30 - Implementando la solución 2
• 14:53 - Análisis de coste
• 17:27 - Conclusión
#roadTo100k

Пікірлер: 221

  • @BettaTech
    @BettaTech3 жыл бұрын

    Si queréis ver el otro problema REAL que resolvimos en BettaTech, os lo dejo por aquí! 👉🏻 kzread.info/dash/bejne/eqOIldtmfJXaYpM.html Como bien ha notado @Javier Gavilán Mérida, ancestor debe inicializarse a NULL para tratar el caso en el que nos pasen nodos no existentes. Gracias!

  • @imt3206

    @imt3206

    3 жыл бұрын

    Hey wey. Por qué Betta Tech y no Alfa Tech?

  • @scarfacethebest

    @scarfacethebest

    3 жыл бұрын

    O igual mejor validar antes del for que route1 y route2 no sean null, de lo contrario retornas null sin llegar al for.

  • @HolaMundoDev
    @HolaMundoDev3 жыл бұрын

    Me encanta ver como va mejorando la calidad de tus videos!

  • @TheChersa12

    @TheChersa12

    3 жыл бұрын

    Los amo a los dos, les besaría sus calvas hasta que tenga mi título

  • @tonatiuhislas8006

    @tonatiuhislas8006

    3 жыл бұрын

    Oh my god!! el dross de la programacion aqui!!!! saludos.

  • @latincoder

    @latincoder

    3 жыл бұрын

    Ya van subiendo la barra bien cabron, tengo que ponerme Las pilas

  • @emanuelmeza4290

    @emanuelmeza4290

    3 жыл бұрын

    Esas barbas les dan poderes de desarrollo jajaja

  • @Luis-ww1kx

    @Luis-ww1kx

    3 жыл бұрын

    Se rompió la cuarta pared... fffuuuuaaaa!!!!

  • @cristianh.valderrama1603
    @cristianh.valderrama16033 жыл бұрын

    No podemos volverlo dinámica? Es decir al final del video dejas como un "ejercicio" y en el siguiente video lo explicas o das la solución. Ganas tu y ganamos nosotros

  • @reydavid7300

    @reydavid7300

    3 жыл бұрын

    Me gusta esa dinámica, asi para practicar y se puede hacer seguido!

  • @noehernandez5504

    @noehernandez5504

    3 жыл бұрын

    Sigue a liratron, hace streams los miércoles realizando ejercicios de leetcode, es ingeniero en Amazon, igual a veces lleva a invitados interesantes

  • @victorguevara4698
    @victorguevara46983 жыл бұрын

    Brutal, lo vere uno y otra vez para entenderlo mejor. Saludos.

  • @vladimirreyes1661
    @vladimirreyes16613 жыл бұрын

    Cuando estoy resolviendo algoritmos siemper me enfoco en el problema pero casi no visualizo los posibles acontecimientos , tengo que reforzar esa parte.

  • @juanag2278
    @juanag22783 жыл бұрын

    Una sección sin duda muy interesante, me parecen geniales estés tipo de videos. Saludos!

  • @wilmerrodriguezs9306
    @wilmerrodriguezs93063 жыл бұрын

    Me encanta este tipo de video, no dejes de hacerlos. Excelente contenido.

  • @agustindeluca5823
    @agustindeluca58233 жыл бұрын

    Me gustan mucho este tipo de videos, sería genial una sección dedicada!

  • @fd2195
    @fd21953 жыл бұрын

    Gracias por el video! Sería interesante más videos sobre esta serie, creo que ayudan mejor a aterrizar teoría e ideas que tenemos. Los de videos de explicación de algoritmos serían muy buenos también :) saludos!

  • @juancamiloaponte2865
    @juancamiloaponte28653 жыл бұрын

    Hace poco encontré tu canal y es increíble, muchas gracias por estos videos.

  • @davidhch9833
    @davidhch98333 жыл бұрын

    Muchas gracias por este tipo de vídeos. :)

  • @arminschneider9132
    @arminschneider91323 жыл бұрын

    Muchas gracias por este tipo de videos, son muy útiles para practicar c:

  • @albertos8732
    @albertos87323 жыл бұрын

    Es la primera vez que veo los videos de tu canal y me encantaron, muchas felicidades !!!!

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Muchísimas gracias!!!!

  • @Efryed
    @Efryed3 жыл бұрын

    Estos vídeos me parecen muy interesantes y más que estoy viendo este tema en la universidad.

  • @pablolanda1212
    @pablolanda12123 жыл бұрын

    Te lo juro tio, te explicas mejor que muchos profesores. Muchas gracias por tus vídeos y ojala llegues al millon de subs.

  • @CM-ls6fh
    @CM-ls6fh3 жыл бұрын

    Llevo mirando tus videos desde hace poco, pero en menos que una semana empiezo mis estudios de informatica en la Universidad Tecnica de Berlin y estoy mas que agradecido a tu canal por compartir todo este conocimiento.

  • @SoyRage
    @SoyRage3 жыл бұрын

    Gracias ☺️! Ahora ya podré tener más posibilidades para trabajar!!🌹😍

  • @fabianbetancourt973
    @fabianbetancourt9733 жыл бұрын

    Excelente video gracias,,me han aportado mucho en mi carrera q estoy haciendo actualmente,, gracias

  • @luismiguelcopadiaz1940
    @luismiguelcopadiaz19403 жыл бұрын

    Cursos de estructuras de datos y algoritmos! Por favor

  • @srhadesito6714
    @srhadesito67143 жыл бұрын

    Me encantan tus videos!! Espero que sigas así, se nota cada vez una mejora en ellos! Una duda, qué monitor usas? Un saludo desde Madrid 😊

  • @george003
    @george0033 жыл бұрын

    Me perdí un poco pero lo veré varias hasta entender, muy buena explicación gracias BettaTech por este contenido espero se siga difundiendo.

  • @diegollanespasos249
    @diegollanespasos2493 жыл бұрын

    Justo el tipo de videos que he estado viendo para prepararme para mi entrevista técnica de programación.

  • @elalemanthebad
    @elalemanthebad3 жыл бұрын

    Por favor, continúa subiendo este tipo de videos. Saludos desde República Dominicana.

  • @gorkaelorduy6711
    @gorkaelorduy67113 жыл бұрын

    Genial. Un saludo y gracias por tus magníficas explicaciones.

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Gracias a ti!

  • @AlexGalo0
    @AlexGalo03 жыл бұрын

    La rompes con estos videos, sos un crack, saludos desde Honduras!

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Gracias! Saludos!

  • @DuniC0
    @DuniC03 жыл бұрын

    Buenas, me ha encantado el vid. Ya lo han comentado antes, pero en mi opinión sería más adecuado tener en cada empleado una referencia a su jefe en lugar de la lista de empleados del jefe. Obtener la solución no sólo sería lineal, sino que sería lineal respecto a las profundidades de ambos nodos que suele tender a ser logarítmica en función al número de nodos. Un saludo.

  • @patriciabonaldy9624
    @patriciabonaldy96243 жыл бұрын

    Hola! primero muchas gracias por subir este tipo de videos, es muy interesante, que opinas de resolver este tipo de ejercicios tipo arboles, usando recursividad?. Saludos desde Argentina

  • @luis96xd
    @luis96xd3 жыл бұрын

    ¡Excelente video Betta Tech! Aprendí bastante, Muchas gracias 😄 Por fin pude entender la estructura de datos de los árboles, y me gustó conocer esa propiedad de que solo existe un camino entre cualquier par de nodos. Y que no es cíclico 😮 También aprendí un poco más de como se hacen los análisis algorítmicos 😄 Aún tengo que repasar otras cosas ¡Saludos!

  • @leow375
    @leow3753 жыл бұрын

    Muy buen video! Esta vez te pasaste! :)

  • @rusberlrosales1199
    @rusberlrosales11993 жыл бұрын

    muy buen material, desde hoy te sigo, también al holamundo, son los dos canales me parecen muestran verdadero contenido de provecho, mis felicitaciones.

  • @programacionfia_ues1004
    @programacionfia_ues10043 жыл бұрын

    Siempre e pensado en hacer cursos de algún tema informático, aunque actualmente no me siento tan preparado porque no tengo conocimientos tan profundos que digamos, pero mi objetivo al querer hacer esos vídeos es dar cursos de programación o de temas informáticos pero con buena calidad y gratis ya que yo e pasado por muchas dificultades por las cuales no puedo costearme cursos que a lo mejor me harían avanzar más rápido en mi formación aparte de lo que me da la universidad

  • @programacionfia_ues1004

    @programacionfia_ues1004

    3 жыл бұрын

    Pero solo quiero decirte que a ti te veo con la capacidad de hacer un muy buen curso y ojalá fuera gratuito para ayudar a la comunidad a crecer y sin importar las limitantes económicas, espero leas este comentario y te animes a hacer cursos, de preferencia comienza con uno de estructuras de datos xd

  • @jorgeelieserramirezpena5669
    @jorgeelieserramirezpena56693 жыл бұрын

    Gracias por las explicaciones!

  • @marcegon13
    @marcegon133 жыл бұрын

    Hola... estoy encantado de haberme suscripto... es muy enriquecedor escucharte... solo preguntarte en que lenguaje hiciste el ejercicio... felicitaciones, me estoy iniciando en programación a mis 53 años y acá en Argentina hay que reinventarse... saludos

  • @msteroz
    @msteroz3 жыл бұрын

    Me encanto tu video, ¿podrías hacer un vídeo recomendando libros o recursos en linea para aprender estructuras de datos?

  • @marcjall
    @marcjall3 жыл бұрын

    Super like! Muy bueno este tipo de videos.

  • @cristianmedina1834
    @cristianmedina18343 жыл бұрын

    Nos encanta que resuelvas problemas por eso los likes, por que no haces el problema del laberinto con el camino más corto

  • @davidlucas8303
    @davidlucas83033 жыл бұрын

    Como todos los nodos de un arbol solo tienen un único "padre", en la implementación de la estructura de datos hubiera incorporado un atributo "parent: TreeNode" (que en el caso del nodo raiz seria vacio) y un método recursivo que sea "getRouteToRoot( node: TreeNode)" donde dado un nodo nos devuelve el camino hacia la raiz. Así nos ahorramos un BFS y simplemente es ver cual es el último ancestro común entre los dos nodos!

  • @DuniC0

    @DuniC0

    3 жыл бұрын

    Totalmente de acuerdo, una relación desde el empleado a su jefe, en lugar de un jefe con una lista de empleados, mejorará el rendimiento del algoritmo!

  • @johncerpa3782

    @johncerpa3782

    3 жыл бұрын

    Y para llegar a los nodos dados, necesitas una búsqueda igual o no?

  • @DuniC0

    @DuniC0

    3 жыл бұрын

    Buena pregunta @@johncerpa3782, Suponiendo que no te den directamente el nodo, sino el contenido (por ejemplo el nombre o el id del empleado), como en cualquier base de datos, necesitaríamos un índice que vincule el dato (contenido) con su nodo. La búsqueda en éstos índices podría hacerse en tiempo constante (p.e. con una tabla hash).

  • @johncerpa3782

    @johncerpa3782

    3 жыл бұрын

    @@DuniC0 Podría ser. Habría que tener en cuenta la complejidad en espacio de esa solución porque ocuparías mucho más, creo yo.

  • @camilopalacios7120

    @camilopalacios7120

    3 жыл бұрын

    @@johncerpa3782 de hecho no, si hace precomputo de n nodos el hash table o el array de esos indices también tendría el mismo espacio en memoria que es n, es decir lineal.

  • @yamillanz6398
    @yamillanz63983 жыл бұрын

    Excelente como siempre...

  • @sanguchet3646
    @sanguchet36463 жыл бұрын

    Al principio lo había pensado comparando cada ancestro de un array con el primero del otro, después el siguiente y asi, llendo de abajo hacia arriba y cuando encuentre uno igual cortamos el bucle, es casi lo mismo que se plantea en el vídeo, solo que el metió código para que sea más ligero de procesar, pero son fors y whiles, asique sigue siendo O2x o O3x, si usas Python podrías implementar Numpy y sería aún más rápido, ya que Numpy usa una especie de funciones especializadas en recorrer arrays

  • @impactvideos3799
    @impactvideos37993 жыл бұрын

    ese algoritimo se puede mejorar muchisimo si añades un atributo de profundidad y enves de partir desde el nodo raiz, partes desde cada nodo evaluando el padre y comparandolo con el otro siempre y cuando sean de la misma profundidad, en caso de que no sean de la misma profundidad priorizas en avanzar en el que tiene mayor profundidad hasta que sean iguales y asi ir comparando y asi te evitas recorrer todo desde nodo raiz y solo recorrer desde abajo hacia arriba.

  • @juandiez263
    @juandiez2633 жыл бұрын

    Empecé a estudiar programación y no entiendo nada, pero me gusta. Podría estar viendo videos como éste. Espero que en algún momento entienda algo ^_^

  • @jer0799
    @jer07993 жыл бұрын

    Muy buen vídeo, saludos desde México!!

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Gracias! 😊

  • @meronmeron866
    @meronmeron8663 жыл бұрын

    Estuvo buenisimo la explicacion y el paso a paso, me ha aclarado varias dudas. Hablando de dudas, que paleta de colores usas? Y estará disponible para vscode?

  • @javiergavilanmerida2133
    @javiergavilanmerida21333 жыл бұрын

    ancestor debe ser por defecto null, si te pasan como parámetro value1 el valor 34, no existe en el arbol y por lo tanto no existe ancestro común :)

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Totalmente cierto! Error mío!

  • 3 жыл бұрын

    Muy buen video, saludos!

  • @Dev403M
    @Dev403M3 жыл бұрын

    Super video! Saludos! 🤗

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Muchas gracias!!!!

  • @ZzZz-dr7uq
    @ZzZz-dr7uq3 жыл бұрын

    Muy bueno, no entendi, todavia tengo que reforzar tendre que volver a ver el video hasta entenderlo a la perfeccion gracias.

  • @miguelalbertocalderon5902
    @miguelalbertocalderon59023 жыл бұрын

    deberías colocarlo como un reto, es decir propones el ejercicio das unos días para responderlo escoges 3 de esas soluciones, las analizas y propones tu propia solución así se hace mas dinámico. Pero me encantan este tipo de videos, espero ver mas.

  • @MikiKiller69
    @MikiKiller693 жыл бұрын

    me alegra mucho que leas los comentarios y los aceptes positivamente! yo fui uno de los que comentó lo que dices al principio, pero con la explicación si que me parece más logico... buen video!

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Gracias! Poco a poco mejoramos :D

  • @jrerehs96
    @jrerehs963 жыл бұрын

    ve la lista de problemas de codeforces o del ICPC :3 esos están bien hardcoreee!!!! Saludos :P

  • @danielespinola2636
    @danielespinola26363 жыл бұрын

    me encanto el video. Yo lo que hubiese hecho es guardar la referencia del padre en la estructura del arbol, luego cuando me dan dos nodos lo que hago es recorrer el árbol hasta encontrarlos. Una vez que tengo la referencia de cada nodo, lo que hago es preguntar por el valor de su padre y voy haciendo los siguientes pasos: a) Agarro el valor del nodo padre de A y comparo el valor con el nodo padre de B b) el que es más grande (en valor) significa que esta más abajo en la jerarquia, por ende, tengo que agarrar el padre de ese nodo (sería el abuelo para el nodo en cuestión) y preguntar su valor y vuelvo a repetir la pregunta de quien es más grande C) el punto de quiebre sería cuando encuentro el mismo valor en los nodos padres (la solución al problema) o encuentro directamente la raíz del árbol (solución del problema) un saludo y me encantan tus videos, siempre los miro y aprendo y/o recuerdo algunos temas :) pd: para hacer la solución que dije es obvio que tengo que tener el árbol ordenado sino no podría aplicarla. Muchas veces eso en las entrevistas no te aclaran eso,yo lo que hago siempre es suponerlo y aclararlo cuando doy la solución

  • @santucigod
    @santucigod2 жыл бұрын

    Excelente contenido. 👌

  • @BettaTech

    @BettaTech

    2 жыл бұрын

    Gracias!!

  • @matiassantos4709
    @matiassantos47093 жыл бұрын

    Hombre no nos agradezcas a nosotros, gracias a ti que nos despejas las inseguridades de como son las entrevistas de trabajo, sigue asi, saludos.

  • @DanielLozadaDev
    @DanielLozadaDev3 жыл бұрын

    creo que amo tu canal 🥺

  • @franciscojesusmartinezdura4748
    @franciscojesusmartinezdura47483 жыл бұрын

    Me gusta mucho esta serie 👏

  • @JonGonzalezGarrido
    @JonGonzalezGarrido2 жыл бұрын

    El problema de la solución no es el coste computacional si no el coste de memoria. Si el árbol es muy grande almacenamos demasiados datos. Una solución más óptima sería sacar la profundidad de ambos e igualarlos en profundidad escalando a través de sus padres en el más profundo. Con ello no hay nada que almacenar y es ir comparando elementos de la misma profundidad hasta que coincidan

  • @escobarhector4286
    @escobarhector42863 жыл бұрын

    Excelente canal, soy nuevo suscriptor

  • @manulobato7962
    @manulobato79623 жыл бұрын

    Estaría bien que dejaras un GIT con el código por si alguien le quiere echar un vistazo. Buen video saludos.

  • @jesusguirado9253
    @jesusguirado92533 жыл бұрын

    siempre que veo arboles pienso en funciones recursivas creo que se podia hacer recursivamente y es mas optimo no tienes que recorer tantos nodos pero la forma de resolverlo aqui es mas sencilla de entender

  • @freycrack5003
    @freycrack50033 жыл бұрын

    Me parece interesante quiero más videos de este tipo

  • @IngFrank-nt7yb
    @IngFrank-nt7yb3 жыл бұрын

    Recorrería desde los nodos de entrada hasta la raíz, interceptaría los dos conjuntos de nodos resultantes y el primer elemento de la intercepción es el primer nodo en común.

  • @rafamartinez9739
    @rafamartinez97393 жыл бұрын

    muy buen aporte

  • @alextojar
    @alextojar3 жыл бұрын

    Buen vídeo!

  • @allanjoseportillohernandez7925
    @allanjoseportillohernandez79253 жыл бұрын

    Que bien explica este man, nada que ver con mis catedraticos de universidad.

  • @jereok91
    @jereok913 жыл бұрын

    Excelente broo

  • @vhspiceros
    @vhspiceros6 ай бұрын

    Hola Martin, esta genial el video, pero me queda una duda, en general estas estructuras se tienen los nodos hijos como Left y Right.. o estoy equivocado.. Saludos desde Chile.

  • @many29juan
    @many29juan3 жыл бұрын

    Gracias por este hermoso video esto me resume un corte de este semestre en mi ing. lo chistoso es que el profe solo lee y no dan ganas de ver este tema. interesa más y practique.

  • @Jocker88
    @Jocker883 жыл бұрын

    Interesante vídeo, me encantan estos ejercicios que pese a no ser complicados requieren de pensar un par de minutos (si no se tiene mucha experiencia como yo). Por otro la do me gustaría hacerte una pregunta, ¿Qué opinas del uso de break? He visto que lo usaste en el else (minuto 9 aprox), y siempre he leído que los break rompen la ejecución de manera abrupta y que se desaconseja su uso, de hecho creo que en Python ni siquiera existe, me gustaría saber tu opinión como profesional, yo como Junior leo mucho pero al final no se muy bien lo que creer. Un saludo y enhorabuena por tu trabajo con el canal, es muy divertido y educativo.

  • @javiergavilanmerida2133

    @javiergavilanmerida2133

    3 жыл бұрын

    Desde mi punto de vista no es aconsejable usarlo si lo puedes evitar. Normalmente si encuentras un break ocurre uno de 2 casos posibles: Caso #1: El break está señalando una condición sencilla de salida de un bucle, y por tanto la condición del "if" que lleva al break debería estar situada en la condición del while o for Caso #2: El break está señalando una condición compleja de salida de un bucle, lo cual implica que al menos parte del bucle es complejo, y por tanto todo el bucle debería salir a una función a parte y usarse return en lugar de break (esto te permite identificar rápidamente la salida con resultado, que es el return dentro del bucle, de la salida sin resultado, que será el return fuera del bucle, normalmente ambos return cerca entre si y al final de la función). Sin embargo, no es que estos 2 casos que yo comento sean definitivos, aún hoy día hay debate sobre esto. Te adjunto un enlance a un comentario de stackoverflow que señala por qué no está de acuerdo con el uso de break SI SE PUEDE EVITAR (nada es definitivo): es.stackoverflow.com/a/132112 Al final la cuestión está en como conseguir que el flujo sea fácil de seguir, o lo que es lo mismo, el código sea fácil de leer y entender. Un return sale directamente de la función, por lo tanto no hay realmente problemas para seguir el flujo, sin embargo un break solo termina el bucle, por lo tanto vas a tener que saltar de una línea dentro del bucle a la línea final del bucle (que es más difícil de identificar) para poder continuar. Yo antes que el uso de break veo mejor el uso de continue, ya que el inicio de un bucle es más fácil de identificar y bien usado continue puede reducir el nivel de indentación necesario: Pasaríamos de esto: for( int i = 0 ; i

  • @Jocker88

    @Jocker88

    3 жыл бұрын

    ​@@javiergavilanmerida2133 Muchas gracias por la explicación, seguro que a más de uno le viene genial, yo en ese sentido la "teoría" me la sé y mi opinión es que si usas un break; es que no has pensado lo suficiente en la lógica del algoritmo en cuestión ya que para mi un break; es el último recurso ya que se puede crear un código sin su uso de forma mucho más limpia (como comentas con la extracción a método y el uso de return o el uso de condiciones en otros casos). Simplemente me hubiera gustado saber el por que pone ese break; ahí BettaTech y su opinión, ya que como comentas, no hay nada establecido y puede que haya gente que quiera usarlo, yo como Junior no me echaré las manos a la cabeza aún que a mi personalmente no me guste. Ojalá hubiera más gente como tu en internet con ganas de dar explicaciones tan detalladas, y gracias por el enlace a la discusión de stackoverflow, no conocía ese debate. Un saludo y nuevamente, gracias.

  • @inergarciarodriguez181
    @inergarciarodriguez1813 жыл бұрын

    Es coste lineal en el caso de que se requiera saber el LCA una única vez, en caso contrario se debería implementar un algoritmo mas optimizado que pre-calcule el LCA para cada par de nodos. Una solución seria emplear el algoritmo de RMQ sobre un recorrido DFS

  • @luisalvarez6375
    @luisalvarez63753 жыл бұрын

    Videos así hacen que me encante pasármela todo el día en Hackerrank (≧▽≦)

  • @Phoenicoperus7676
    @Phoenicoperus76763 жыл бұрын

    Hola buen dia justo el problema que mencionas lo pusieron en HackerRank, lo Resolvi con MS SQL.

  • @manuelmontoya4613
    @manuelmontoya4613 Жыл бұрын

    No se si a lo mejor es una barbaridad, pero en principio me parece ( creo...) mas sencillo ir desde el nodo1 y desde el nodo2 hacia atras (conociendo por supuesto el length para salir al llegar al root) y el primer nodo[i-1] (para el primero) que coincida con el nodo [j-1] (para el segundo) en valor; seria la solución.

  • @joaq386

    @joaq386

    4 ай бұрын

    Pensé en esta solución, la veo más eficiente ya que no haría falta recorrer el árbol desde la raíz hasta cada uno de los nodos

  • @JAlbertSG
    @JAlbertSG3 жыл бұрын

    Si tuvieramos datos repetidos en el node.val no funcionaria, yo recomendaria cambiar el algoritmo a hacer comparaciones de clases en vez de valor al igual que en el hashmap no guardar el children.val, si no la instancia de la clase, no estoy 100% de como usa el hasheo de objetos en js pero en python es posible hacerlo

  • @juanfernandoramirez
    @juanfernandoramirez3 жыл бұрын

    Excelente video

  • @reydavid7300
    @reydavid73003 жыл бұрын

    Buen video oye cómo se llama la extensión de colores que tienes?

  • @basurabasura6735
    @basurabasura67353 жыл бұрын

    Buenas, tengo una duda. En caso de que en el ejemplo se cojan 10 y 5, el primer ancestro común que dará la función que creaste no sería 5 ?. De ser así estaría correcto? no tendría que dar 2 como primer ancestro común ya que el 5 sobre el 5 no sería un ancestro sino el mismo ?. Un saludo y mil gracias :)

  • @ivnaqn8521
    @ivnaqn85213 жыл бұрын

    Que esquema de color usas en vim?

  • @alguien9003
    @alguien90033 жыл бұрын

    Hola me gustan tus videos, tengo una duda existencial, siento que no soy nada malo programando, no soy un súper crack, pero tengo esa lógica que se necesita para ello. Estoy en tercer año de Ing. de Sistemas (Bachiller), y me pongo a pensar si será mejor dejar la Uni en el olvido para comenzar a practicar y practicar programación. soy de Costa Rica y tengo 35 años, por eso siento a veces que debería de dejar la Uni y comenzar a picar código, ¿Qué recomiendas?

  • @nikolam-dev
    @nikolam-dev3 жыл бұрын

    Que tema usas de vim se ve genial ! 😍

  • @MrNemq
    @MrNemq3 жыл бұрын

    Sería bueno no llamar a normalize 3 veces, quizás guardarlo en una variable? Eso lo haría mucho mas rápido.

  • @protodibujante
    @protodibujante3 жыл бұрын

    Joder que bueno está Vsauce ahora que empezó a hablar español

  • @igna01
    @igna013 жыл бұрын

    Dentro del while de computeRoute, donde hay un for que itera cada hijo del nodo que se está revisando actualmente, no generaría algún tipo de complejidad n^2 ? Considerando que por cada nodo de los N nodos se revisan todos sus hijos, lo cual es una cantidad variable de iteraciones. Ojalá veas esto y respondas n.n gracias por tu contenido!

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    Un hijo solo puede tener un padre, por lo que si miras el global de todas las iteraciones que se hacen, solo visitas cada nodo una vez. Si N es el numero de nodos, como maximo puedes hacer n iteraciones. El N^2 aparece cuando haces bucles donde repites visitas normalmente

  • @matiquielma
    @matiquielma3 жыл бұрын

    Pregunta, el for de minuto 9:00 , no deberia estar hecho de mayor a menor? No podriamos dar con un jefe que no es el mas chico en comun entre las dos rutas?

  • @andresmanriqueardila5950
    @andresmanriqueardila59503 жыл бұрын

    El for let child que está dentro del comité route no lo contaste, eso no haría que ese método aumente su complejidad?

  • @lucianojadur

    @lucianojadur

    3 жыл бұрын

    Llego tarde pero para quién le interese (al principio tuve la misma duda) : *Ese mismo for* es lo que le da complejidad lineal al while, ya que en el peor de los casos el nodo actual tiene al resto de los nodos del árbol como hijos. En dicho caso, no se vuelve a ejecutar más el for ya que no quedarían niveles más bajos y simplemente el while itera sobre esos nodos hasta pegarle o no encontrar nada. En caso de que el nodo tenga pocos hijos simplemente se sigue avanzando hacia abajo por cada uno de ellos hasta pegar con el objetivo y descartando esos hijos de los siguientes for, por lo que nunca deberías repetir ningún camino y en el peor de los casos recorrés todo el árbol una sóla vez. La relación de recurrencia quedaría algo como T(N) = N-h + O(h), siendo h el numero de hijos del nodo actual y el O(h) correspondería a encolar esos hijos en la cola, valga la redundancia.

  • @bastiboydiaz7
    @bastiboydiaz73 жыл бұрын

    creo que hubiera sido mejor implementar una busqueda por profundidad, de esta forma obtienes inmediatamente el camino desde la raiz al hijo, y no tienes que guardar los padres ni nada de eso

  • @pellax
    @pellax3 жыл бұрын

    Yo lo que tenía pensado hacer es ir bajando los niveles del árbol hasta llegar a un nodo que entre sus hijos no estuviera los dos nodos citados aunque ahora que lo pienso quizás no sea muy eficiente. Buen vídeo para recordar los recorridos de árboles.

  • @BettaTech

    @BettaTech

    3 жыл бұрын

    No te mentire, es lo que hice cuando en su momento estuve en la entrevista esta 😂 Lo que hice fue hacer un bfs, y por cada nodo que visitaba hacia otro bfs buscando ambos nodos. Cuando encontraba el primer nivel donde ya no encontrabana los dos, bingo. Pero claro eso a la practica podia ser cuadratico

  • @pellax

    @pellax

    3 жыл бұрын

    @@BettaTech Gracias, es un gran consuelo, que yo no soy de computación.

  • @TheQerde
    @TheQerde3 жыл бұрын

    Creo que el bfs no haria falta. Si se le añade el puntero de un hijo al padre. Asi poder hacer directamente el backtrace. Lo que significa coste logaritmico (por niveles de arbol)

  • @ogasdiaz
    @ogasdiaz3 жыл бұрын

    Sería interesante que hagas un video explicando la solución logarítmica al mismo problema

  • @salvadorcano553

    @salvadorcano553

    Жыл бұрын

    Estableciendo que fuera posible y que lograramos encontrar una solución con ese coste

  • @brunococcetta
    @brunococcetta3 жыл бұрын

    Tengo una duda, cual es el lenguaje que estas utilizando en el video?

  • @DiegoGonzalez-ju2xh
    @DiegoGonzalez-ju2xh3 жыл бұрын

    Puede hablar de nodos? Para junior :D

  • @jaredM_2710
    @jaredM_27102 жыл бұрын

    No he visto la solución. Pero según yo, la solución es almacenar el camino en una pila y luego revisar ambas pilas y ver en jerarquía cuál es el primer elemento común que hay dentro de ellas. Podríamos hacerlo con recursividad y un if

  • @Norhther
    @Norhther3 жыл бұрын

    Esto se puede hacer en O(log n) en el mejor caso

  • @adolfex9309
    @adolfex93093 жыл бұрын

    Que gran video enserio necesitaba más de este tipo eres una increíble persona sigue así!!

  • @yeleqcrnoratasnipearataban5868
    @yeleqcrnoratasnipearataban58683 жыл бұрын

    Hola , cual es tu AirlineTheme?

  • @Manuel-wj1xs
    @Manuel-wj1xs3 жыл бұрын

    Muy buen material. Estaría muy bien una serie sobre cómo enfrentarse a una entrevista de trabajo real, con todas sus etapas. Gracias por el vídeo!

  • @vitillobandolero8668
    @vitillobandolero86683 жыл бұрын

    Este tipo de vídeos me vienen de maravilla, ya que estoy acabando segundo de DAM. Aunque no voy a hacer entrevista de ingeniero, no está de más saber de todo

  • @paf_106

    @paf_106

    3 жыл бұрын

    Yo tambieen, en qué instituto lo estás haciendo?

  • @miguelfdez9098

    @miguelfdez9098

    3 жыл бұрын

    @@paf_106 Que haces aqui 😂😂

  • @paf_106

    @paf_106

    3 жыл бұрын

    @@miguelfdez9098 jajajaja pasaba por aquí

  • @paf_106

    @paf_106

    3 жыл бұрын

    @@miguelfdez9098 sigues este canal?

  • @miguelfdez9098

    @miguelfdez9098

    3 жыл бұрын

    @@paf_106Me acabo de suscribir, le veia de hace un tiempo.

  • @johncerpa3782
    @johncerpa37823 жыл бұрын

    Más videos así

  • @veoquenoesunproblema
    @veoquenoesunproblema Жыл бұрын

    Jaja, ese problema está bien Bravo jaja

  • @cdkr0
    @cdkr03 жыл бұрын

    Hola BettaTech... disculpa salirme un poco del tema pero yo estoy suscrito a tu canal y ya no recibo notificaciones de nuevos vídeos. Por lo que pude averiguar es Google quien el 13/ago/2020 quien ya no envía e-mail de aviso sobre nuevos videos. La pregunta del millón es cómo solucionar este problema, no sólo para tu canal sino que para todos los que uno puede estar suscrito?

  • @CragCode
    @CragCode3 жыл бұрын

    En python ayudaría a la resolución del problema los conjuntos.

Келесі