¡Pregunta de entrevista en JavaScript!

Поделиться
HTML-код
  • Опубликовано: 13 сен 2024
  • 🔥 ¡Desafío de programación en JavaScript!
    Esta pregunta de entrevista es un clásico, ya que deberás demostrar una mínima lógica de programación y saber recorrer bucles.
    Se trata de encontrar la suma más grande entre dos números adyacentes en un array de números enteros desordenados.
    En este código, utilizo un bucle for para recorrer el array y calcular la suma de cada par adyacente de números. Luego, actualizo la variable maxSum con el valor máximo obtenido en cada iteración.
    Usamos el infinito negativo para asegurarnos de que la variable maxSum siempre tenga un valor inicial menor que cualquier suma posible.
    Este desafío te permite practicar tus habilidades en JavaScript y poner a prueba tu lógica.
    ¿Te animas a intentarlo tú también? ¡Déjame saber en los comentarios cómo lo resolviste!
    Si te gusta este contenido, me ayudas mucho si lo compartes y dejas tu ❤️.

Комментарии • 656

  • @husdadymena3682
    @husdadymena3682 Год назад +688

    Que solución más Senior, se nota la confianza y seguridad de una persona que tiene más de 15 años de exp

    • @boombreaks3552
      @boombreaks3552 Год назад +18

      jajajajajajaja

    • @jphvnet
      @jphvnet Год назад +10

      Jajajaja

    • @sebastianmarcelosuarez3489
      @sebastianmarcelosuarez3489 Год назад +6

      Jajajajajaja

    • @golgiapparatus149
      @golgiapparatus149 Год назад +18

      No entiendo por qué se rien esos de arriba

    • @jphvnet
      @jphvnet Год назад +68

      @@golgiapparatus149 que su comentario es una pavada, da risa. La solución no es Senior, no te hace falta experiencia, es lo que escribís en un examen de programación

  • @alejandrorios6999
    @alejandrorios6999 Год назад +213

    Lo hermoso de la programación. Cada que logro resolver esos pequeños ejercicios de lógica, se siente una satisfacción unica 😍

    • @ez7125
      @ez7125 9 месяцев назад +1

      Savee

    • @robs3550
      @robs3550 4 месяца назад

      Por favor nunca resuelvas los ejercicios de lógica así. O al menos que no sea tú respuesta final

    • @tunyshark2924
      @tunyshark2924 4 месяца назад +1

      igual, apenas lo estoy retomando, y los bucles for a pesar de ya entender como funcionan, a veces me confundo mucho y mas cuando esta un bucle for anidado, y estos dias he estado resolviendo ejercicios que le pido a chat gpt, ignoro los mas faciles y me voy con los que siento que me ponen a pensar, y cada que resuelvo uno me siento bien, y cuando fallo en otro siento que no sirvo para esto jajja

    • @alejandrovillanuevallatanc8742
      @alejandrovillanuevallatanc8742 3 месяца назад +1

      Te entiendo, yo me confundo más cuando utilizo un do while a veces no me sale lo que pido y terminó con los efectos contrarios a los que quiero

  • @greyshopleskin2315
    @greyshopleskin2315 Год назад +56

    En python, de forma recursiva:
    def max_adj_sum(nums: list[int]):
    match nums:
    case [n1, n2, *rest]:
    return max(n1 + n2, max_adj_sum([n2, *rest]))
    case _:
    return 0

  • @pguti778
    @pguti778 Год назад +299

    Si, siempre preguntan esas boludeces pero nunca son problemas de la vida real

    • @arielcastillo7925
      @arielcastillo7925 Год назад +24

      Yo lo veo bastante utilizable este ejercicio

    • @camiloalvarez0
      @camiloalvarez0 Год назад +17

      Es de lógica

    • @Alainsr
      @Alainsr Год назад +32

      Es para desarrollar lógica matemática y de programación. Y está muy bien 👌🏻. La base es escencial

    • @thecodecatalyst
      @thecodecatalyst Год назад +17

      De acuerdo, jamás verás algo ni de cerca parecido desarrollando software.

    • @stackercoding2054
      @stackercoding2054 Год назад +51

      Esto es como ir a las pruebas para entrar al ejercito y le digas al superior que en mitad de una guerra nadie se va a tener que poner a hacer 100 flexiones...

  • @matsueokazaki8297
    @matsueokazaki8297 3 месяца назад +7

    cuando fui estudiante en los 5 lugares donde trabaje, jamas me hicieron tales preguntas en una entrevista, simplemente me traian errores reales en algun codigo y decian que los resuelva...

    • @yeremmi789
      @yeremmi789 24 дня назад

      Olv. Podrías dar un ejemplo de como eran? 👀

  • @arturorosas2170
    @arturorosas2170 8 месяцев назад +73

    Requisitos: no uses if
    Solución: usa la función de una librería que internamente usa el if, pero que tú no lo ves porque solo usas la función, y su funcionamiento es transparente para el usuario

    • @sergiobmx13
      @sergiobmx13 7 месяцев назад

      recursividad de una funcion seria

    • @CMEP835
      @CMEP835 4 месяца назад

      But existen funciones con return qué condicionan la salida xd

    • @faller222
      @faller222 3 месяца назад +2

      Define:
      max (a,b)
      return (a+b+|a-b|)/2

  • @fredyholguin2525
    @fredyholguin2525 11 месяцев назад +6

    Okey , si entendi bien el -Infinity es para asegurarse de tener el valor mas pequeño posible teniendo en cuenta los negativos , por que si iniciamos el maxSum en 0 no estaran cobtenolados los negativo s

  • @julianp14
    @julianp14 Год назад +4

    Yo me siento muy jr sin su primer empleo, pero lo resolvi de otra manera más básica:
    El array original lo mapeo a otro en el que a cada elemento (número) del array le sumo el valor del índice siguiente (chequeo que esta suma no de "NaN"). Luego, teniendo el nuevo array con los valores sumados, simplemente aplico un "Math.max" al spread del nuevo array y obtengo el resultado.
    Me puso contento poder resolverlo, pero no creo que hubiera podido hacerlo de la manera que se muestra en el video.
    Gracias por el aporte, Midu.

    • @IzumiOrly
      @IzumiOrly 9 месяцев назад

      Esa solución es buenisima y bastante sencilla

    • @omarjesusperezortiz75
      @omarjesusperezortiz75 7 месяцев назад +2

      yo creo que esta bastante bien pero al hacer map crear un nuevo array, entonces en terminos de computacion no es tan optimo

    • @Enzo_Chacin
      @Enzo_Chacin 4 месяца назад

      Imagine tu código Julian y en comparación con el midu la complejidad asintótica es exactamente la misma, usaste probablemente map.reduce(math.max(a, b))
      Eso seria O(n) + (O(n) * O(n)) = O(n^2)
      El de midu fue
      Un for enlistado y dentro la función reduce
      Seria O(n) * O(n) = O(n^2)
      En pocas palabras las dos funciones llevarían exactamente el mismo tiempo de ejecución, lo que quiere decir que un codigo no sea mejor que el otro puesto que tienen la misma complejidad asintótica

    • @guidodinello1369
      @guidodinello1369 3 месяца назад

      ​@@Enzo_ChacinDonde ves el reduce en el video? Es un recorrido al array osea O(n). Adentro del bucle hay accesos al array O(1) y un max entre dos numeros que tmbn es O(1).

  • @arianaromero9552
    @arianaromero9552 Год назад +7

    Mi solucion en python aplicando list comprehesion de forma sencilla de leer
    def max_adjacent_sum(numbers: list[int]) -> int:
    max_sum = max(numbers[i] + numbers[i+1] for i in range(len(numbers)-1))
    return max_sum
    Saludos

    • @illuminatiwave8093
      @illuminatiwave8093 3 месяца назад

      Y para que el retiren si directamente podrías usar la línea, de todos modos solo devuelve un número xd

  • @luisgmzz_
    @luisgmzz_ Год назад +21

    Yo lo hubiese hecho, ya que vengo de otros lenguajes sin Infinity, asignando maxSum = array[0] + array[1] y empezar a iterar desde el segundo elemento, y eliminas una iteración.

    • @MathPay
      @MathPay 9 месяцев назад

      si el arreglo sólo tiene dos elementos, se desborda y rompe el codigo, es mejor estandarizar en cualquier caso

    • @luisgmzz_
      @luisgmzz_ 9 месяцев назад +1

      @@MathPay no, ya que i = 2, no haría ninguna iteración del for, ya que 2 < 2 sería false

    • @marcosfrias28
      @marcosfrias28 8 месяцев назад

      @@luisgmzz_ Pero i=0 a inicio del ciclo así que haría dos iteraciones igualmente, no?

    • @luisgmzz_
      @luisgmzz_ 8 месяцев назад +1

      @@marcosfrias28 nono claro, la idea sería poner i= 1 en el ciclo jajaja

    • @JorgeMCorbi
      @JorgeMCorbi 7 месяцев назад

      Eso mismo estaba pensando yo, se va fuera del array en la última iteración. Se que en otros lenguajes eso me va a petar en runtime, pero JavaScript es tan impredecible que a saber.

  • @mayvergara7466
    @mayvergara7466 Год назад +47

    No entendí, pero genial❤

    • @rigobertovanegalopez5909
      @rigobertovanegalopez5909 Год назад +4

      Sí conoces los fundamentos de la programación es fácil entenderle, aunque se puede complicar un poco si no conoces la sintaxis del lenguaje de programación.

    • @joseantoniogarciarico2697
      @joseantoniogarciarico2697 Год назад

      Te esta pidiendo la suma mas grande que salga de la suma de dos números que esten consecutivos de todos ésos números.

  • @danscrip
    @danscrip Год назад +41

    Cómo hago para decirle que nesesito googlear adyacente al entrevistador?????

    • @justahumanwithkermitsface1923
      @justahumanwithkermitsface1923 7 месяцев назад +4

      Espere que abro el chatgpt 😂

    • @juannicolasali3393
      @juannicolasali3393 5 месяцев назад

      lo primero que hice!! xd

    • @criscc2223
      @criscc2223 4 месяца назад

      Adyacente es un termino muy utilizado en matemáticas, si tienes mínimo un terciario o a lo sumo un año de una carrera afín seguro entiendes.(matemáticas es algo que se suelen saltar los autodidactas y por eso no entienden estos términos.)

  • @LeotheProdu
    @LeotheProdu Год назад +6

    En verdad he hecho aplicaciones, autentificaciones de usuario, tienda virtual, bases de datos, usos de chatgpt, descargas, manejo de archivos, mensajes de correo, manejos de dinero, de todo un poco... Backend, frontend y nunca he necesitado saber responder algo como esto, pero aún así... Si me hubieran hecho la pregunta, no lo paso 😢, por esta razón es que a pesar de haber hecho tanta cosa aun no me animo a buscar trabajo😢

    • @amaury_permer
      @amaury_permer Год назад +3

      Normalmente se hace cuando se trata de seguridad o crear métodos de encriptacion (sha256 por ejemplo) pero son cosas algo complejas y normalmente la idea se la dan a personas como matemáticos y doctores en ciencias de la computación (computer science).

    • @JustIsTime890
      @JustIsTime890 7 месяцев назад +1

      Pero si buscas trabajo aprenderás también a la hora de pasar test técnicos. Al contrario, deberías buscar trabajo. Tomalo como parte del aprendizaje y quien sabe, igual te sorprenden y te contratan.

  • @emmanuelwagner5040
    @emmanuelwagner5040 Год назад +1

    Se nota la confianza y la experiencia por como plantea el ejercicio.
    Algún/algunos libros que recomienden para aprender a programar de 0 a expert?
    Saludos.

  • @Gamer-tb7rf
    @Gamer-tb7rf 7 месяцев назад +25

    El unico problema que veo es que en el for en cada iteración se está creando una variable, lo mejor es declararla por fuera del for y como let.

    • @json-manu
      @json-manu 4 месяца назад +1

      En el ayudaria hacerlo de esa forma?

    • @Gamer-tb7rf
      @Gamer-tb7rf 4 месяца назад +2

      @@json-manu ayuda que en memoria no se crearía y destruiría la variable que está en el for en cada ciclo

  • @joselltemes
    @joselltemes Год назад +39

    let resultado=-infinity
    array.reduce((acc,valor,i)=>{
    let max=Math.max(resultado,valor+array[i+1])
    resultado= isNaN(max)?resultado:max
    return resultado
    })

    • @luwi3435
      @luwi3435 Год назад +4

      El reduce es muy lento, por lo menos para este ejemplo y la mayoría

    • @edwardalexanderarroyaveagu9284
      @edwardalexanderarroyaveagu9284 Год назад +6

      Esta bien, pero la solución es díficil de leer.

    • @mhonty
      @mhonty Год назад

      Elegante, muy elegante!!

    • @fabriperoconalgomasytodojunto
      @fabriperoconalgomasytodojunto Год назад

      de dónde sale resultado?

    • @joselltemes
      @joselltemes Год назад

      @@fabriperoconalgomasytodojunto del enunciado, vale -infinity, tambén dejé otra solución usando recursión por si interesa

  • @juliansalamanca5497
    @juliansalamanca5497 4 месяца назад +2

    Yo declararía el valor maximo como la primera suma, si hay otra mayor que se cambio a través del if o del math.max

  • @sebastianlozano7707
    @sebastianlozano7707 Год назад +3

    Hasta 3 días enteros hendiéndome practicando resolver esos ejercicios

  • @pablomedina8575
    @pablomedina8575 4 месяца назад +1

    cierro la pagina y voy por la siguiente entrevista

  • @drero16
    @drero16 4 месяца назад +1

    Varios de los comentarios mencionan ordenar primero, pero si hacen esto, perderan la condición de que los dos números deben ser adyacentes.
    Por ej, para este array [6,4,7,1] la solución seria 4 y 7 = 11, y no los dos mayores absolutos.

  • @jolujs
    @jolujs Год назад +90

    Me pone triste no saber como resolver esto😢

    • @Thenatgamer
      @Thenatgamer Год назад +16

      X2 pero bn tengo 14 aun tengo tiempo de mejorar mi lógica, afortunadamente

    • @alejandrorios6999
      @alejandrorios6999 Год назад +16

      Tienes que entrenar tu logica de programación. Estudiar sobre algoritmos ayuda mucho

    • @jolujs
      @jolujs Год назад +7

      @@alejandrorios6999 Muchas gracias, lo haré. Tienes alguna recomendacion de algun canal o video?

    • @alejandrorios6999
      @alejandrorios6999 Год назад +9

      @@jolujs con gusto bro. Fernando Herrera tiene un curso en Udemy llamado programación para principiantes. Ese te puede servir o sino busca ahi algun otro o en RUclips que de seguro deben haber varios

    • @jolujs
      @jolujs Год назад +5

      @@alejandrorios6999 Haré ese de fernando herrera, muchas gracias Alejandro.

  • @pehachepe
    @pehachepe Год назад +4

    Con un reduce queda bastante más sencillo en mi opinión

  • @codesthenos
    @codesthenos 3 месяца назад

    He tardado menos de 5 min, llevo poco tiempo aprendiendo, estoy contento

  • @kevinandresortizmerchan732
    @kevinandresortizmerchan732 6 месяцев назад +2

    Ordeno el arreglo de manera descendente , tomo los dos valores del arreglo y luego los sumo

    • @jtl8608
      @jtl8608 5 месяцев назад

      Jajajaja eso hice exactamente yo xD, creo que al inicio del video hubiera sido bueno que pusiera restricciones si no podiamos hacer eso.

    • @nicolasfernandez7996
      @nicolasfernandez7996 5 месяцев назад

      Vine a buscar quien comentaba esto jaja yo lo pense asi de principio

    • @alexkillaz4179
      @alexkillaz4179 4 месяца назад

      No funciona así, te pide las suma mayor de dos números consecutivos, no de los números más grandes. Si tomas como ejemplo el siguiente array:
      20, 5, 7, 6 , 22
      Entonces la suma mayor sería 28. Si ordenas los valores de forma descendente:
      22, 20, 7, 6, 5 y sumas los dos primeros valores 22 y 20 que da 42, el resultado estaría incorrecto.

  • @victorenriquez978
    @victorenriquez978 7 месяцев назад +6

    Así con javascript una sola linea te sale, saludos
    returnt array.sort()[array.length-1] + array.sort()[array.length-2];

    • @SandwichStorePlay
      @SandwichStorePlay 6 месяцев назад +1

      exacto, no se necesita tanto: var addmax = a => {a.sort((a,b)=>b-a);return a[0]+a[1]};

    • @hugehazard
      @hugehazard 5 месяцев назад +3

      Creo que cuando se refiere a dos número adyacentes se refiere a adyacentes dentro del array desordenado. Con tu solución no se podría garantizar que los dos esten al lado del otro 🤔

    • @guidodinello1369
      @guidodinello1369 3 месяца назад +1

      Lo principal es lo del comentario de arriba, al ordenarlos perdes la info de cuales son adyacentes. Igual en caso de que funcionara, la time complexity de esta forma seria peor. Ordenar el arreglo es O(nlogn) mientras que la ventana deslizante del video es O(n). Por ultimo, re feo que ordenes dos veces jajaj, guardate el array ordenado y hace dos accesos.

  • @Manuel-fv3uj
    @Manuel-fv3uj 4 месяца назад

    Tambien el maxSum puede ser: array[0] * array[1] que serian los primeros dos valores del array, luego el for se encarga de recorrer todo el array y verificar si la suma de otros dos numeros adyacentes es mayor al de la posicion 0 y 1 del array

  • @alejandrojosuediazzepeda9806
    @alejandrojosuediazzepeda9806 9 месяцев назад +1

    Pero el lenght -1 es la última posicion del array, no habrá desbordamiento? Ya que suma posActual + posSiguiente

    • @KeeperOfSolitude
      @KeeperOfSolitude 4 месяца назад

      Buscaba alguien más que se diera cuenta, ese for necesita un lenght - 2

  • @santiagowu5365
    @santiagowu5365 Год назад +4

    No sería mejor inicializar maxSum con la suma del primer par de elementos del array y checkear que como mínimo la longitud del array sea 2?
    Ahí me entra la duda de cómo se define ese -Infinity. Grande midu!

    • @maximogismondi
      @maximogismondi 7 месяцев назад

      El tema es como haces si viene con 0 o 1 elemento ?

    • @santiagowu5365
      @santiagowu5365 7 месяцев назад

      @@maximogismondi pero si es cero, entonces no existe el array. Si es uno, salta a la vista que con uno no nos basta tampoco

    • @maximogismondi
      @maximogismondi 7 месяцев назад

      @@santiagowu5365 te prometo que existen los arrays vacios... habria que contempñar esos casos

  • @oinkpeliculas
    @oinkpeliculas Год назад

    const array = [2, 4, 1, 5, 6, 3, 18]
    const maxAdjacent = () => {
    let sum = -Infinity
    for (let i = 1; i < array.length; i++) {
    let result = array[i] + array[i + 1]
    sum < result ? sum = result : sum
    }
    return sum
    }
    console.log(maxAdjacent(array))

  • @sergiobermudez591
    @sergiobermudez591 Год назад +2

    Yo lo haría con un hashMap, guardaría el valor de la primera suma del elemento actual y el siguiente, y solo se actualizaría si alguna suma es mayor a ese resultado, devolvería el valor del hashMap al terminar todas las operaciones

  • @zeganet
    @zeganet Год назад +47

    Ordenas el arreglo y luego sumas los dos elementos, creo q sería más sencillo sin necesidad del for

    • @amaury_permer
      @amaury_permer Год назад +24

      Nope, deben ser números consecutivos, así como viene el array desde un inicio, al ordenar pierdes el orden inicial

    • @programadoremocional
      @programadoremocional Год назад +4

      @@amaury_permer entonces seria mas facil, recorres el array de 2 en dos sumando y con cada suma metes el resultado en una variable y la comparas con la siguiente suma, si la siguiente suma es mayor entonces lo guardas en la variable, al final imprimes la variable y listo.

    • @programadoremocional
      @programadoremocional Год назад +18

      a, acabo de escribir lo mismo de el video xd

    • @amaury_permer
      @amaury_permer Год назад

      @@programadoremocional sip, así es xd

    • @amaury_permer
      @amaury_permer Год назад

      @@programadoremocional ahora haz secuencia de números consecutivos [4,6,2,3,4,1,8,9] = 3 más larga xd

  • @josemanuelrodriguezcalvo4920
    @josemanuelrodriguezcalvo4920 8 месяцев назад

    No sería hasta length - 2? Para que sumes el penultimo con el ultimo y acabar el bucle

  • @cesarferneypintocalderon2693
    @cesarferneypintocalderon2693 4 месяца назад +1

    En Python usando For:
    Lista1=[2, 4, 1, 5, 6, 3]
    a=0
    b=len(Lista1)-1
    Lista2=[]
    for x in Lista1:
    suma=Lista1[a]+Lista1[a+1]
    Lista2.append(suma)
    a+=1
    if a == b:
    break
    Lista2.sort()
    c=len(Lista2)-1
    print(f"La suma adyacente mas grande es: {Lista2[c]}")

    • @cesarferneypintocalderon2693
      @cesarferneypintocalderon2693 4 месяца назад +1

      Usando While:
      Lista1=[2, 4, 1, 5, 6, 3]
      a=0
      b=len(Lista1)-1
      Lista2=[]
      while a < b:
      suma=Lista1[a]+Lista1[a+1]
      Lista2.append(suma)
      a+=1
      Lista2.sort()
      c=len(Lista2)-1
      print(f"La suma adyacente mas grande es: {Lista2[c]}")

    • @cesarferneypintocalderon2693
      @cesarferneypintocalderon2693 4 месяца назад +1

      Sin el If:
      Lista1=[2, 4, 1, 5, 6, 3]
      a=0
      b=len(Lista1)-1
      Lista2=[ ]
      for x in range(b):
      suma=Lista1[a]+Lista1[a+1]
      Lista2.append(suma)
      a+=1
      Lista2.sort()
      print("La suma adyacente mas grande es: ", Lista2[len(Lista2)-1])

  • @guillermofrancella08
    @guillermofrancella08 4 месяца назад

    En lugar de inicializar en -infinito es mejor inicializar con la suma de los elementos en posición 0 y 1 del arreglo ya que están garantizados y comenzar a recorrer tomando elementos en la posición 1 y 2 del arreglo (si existieran)

  • @benjamingalicia1858
    @benjamingalicia1858 4 месяца назад +1

    No es mas facil ordenarlos de mayor a menor y tomar los dos primeros?

  • @nicolaslaverdepena217
    @nicolaslaverdepena217 6 месяцев назад

    puedes usar un reduce directamente en el array en el cual vas sumando el valor actual y el siguiente, lo comparas con el acumulador y devuelves el mayor de los dos como nuevo acumulador y ya esta

    • @secundariab.2741
      @secundariab.2741 6 месяцев назад

      el truco es hacer con logica, usando lo basico sin tener que estar usando metodos que te haqcen todo

    • @nicolaslaverdepena217
      @nicolaslaverdepena217 6 месяцев назад

      @@secundariab.2741 el reduce no te hace todo. De hecho el reduce es un método mucho más complejo que un simple for que es lo que hizo midudev..eso un junior lo puede hacer

    • @nicolaslaverdepena217
      @nicolaslaverdepena217 6 месяцев назад

      @@secundariab.2741 la respuesta que para ti dio midudev que es la respuesta lógica te deja como un junior a lo mucho un semi senior. Usar un reduce te da alas para que al menos aspires al senior 😉

    • @nicolaslaverdepena217
      @nicolaslaverdepena217 6 месяцев назад

      @@secundariab.2741 reduce no te hace todo. Ni sabrás que es reduce junior

  • @NicolasLucero
    @NicolasLucero 5 месяцев назад +1

    Yo lo que haría es recorrer el array e ir agregando en otro array que solo puede tener 2 números, los valores que voy encontrando. De esta manera siempre voy a saber cuáles son los números mas grandes. Al final los sumo y listo.

    • @KeeperOfSolitude
      @KeeperOfSolitude 4 месяца назад

      Sirve pero es un paso innecesario para lo que pide como resultado

  • @salvadorreal7394
    @salvadorreal7394 Год назад +5

    Para los que dicen que se debe ordenar el arreglo, vuelvan a leer el problema.
    Dice la suma más grande ente 2 números adyacentes, no la suma de los 2 números mas grandes.

  • @Mello_-ei4rq
    @Mello_-ei4rq 4 месяца назад +1

    Creo una lista temporal y hago Ordenamiento por burbuja 2 veces y luego sumo los dos últimos números de la lista. Utilizar un for estás perdiendo muchísima eficiencia

  • @alexisacuna969
    @alexisacuna969 3 месяца назад

    Tuve que verlo como 10 veces para entender toda la lógica

  • @robertmonlar
    @robertmonlar 4 месяца назад

    ASi es... la solucion fue tal como la imagine.. Jajaja.. es broma. Gracias crack, genial aprender contigo.

  • @canabal7
    @canabal7 Год назад

    Pensé hacerlo de la siguiente forma: 1ro. Recorro el array con un for, y voy creando un nuevo array con la suma de la interacción actual con la siguiente (obvio, se recorre hasta el penúltimo elemento). 2do, el nuevo array lo ordeno de mayor a menor con .sort(a,b=>b-a) 3ro retorno el primer elemento del array

    • @canabal7
      @canabal7 Год назад

      function sumaMayor(array) {
      let arraySuma = [ ];
      for (let i = 0; i < array.length - 1; i++) {
      arraySuma.push(array[i] + array[i + 1]);
      }
      arraySuma.sort((a, b) => b - a);
      return arraySuma[0];
      }
      console.log(sumaMayor([2, 4, 1, 5, 6, 3])); // 11

  • @Mike-jq7os
    @Mike-jq7os Год назад +1

    .sort((a, b) => a - b).slice(array.length - 2, array.length).reduce((a, b) => a + b)

    • @midudev
      @midudev  Год назад +1

      Suspendido, por no entender la prueba.

  • @eluizeramadeusdeleondeleon2021
    @eluizeramadeusdeleondeleon2021 Год назад +1

    Para que sirve el infinity

  • @cesarmoreno1657
    @cesarmoreno1657 Год назад +1

    Recorrer El array hasta El penuntilmo Valor del array, si la posicion actual tiene diferencia de 1 o -1 con la posicion consecutiva, sumar y guardar y si vuelve a entrar al if de 1 o -1 sumar y comparar con el Valor actual, y guardar El mayor

  • @CharlieZuko
    @CharlieZuko 3 месяца назад

    No necesitas usar -Infinity.
    Puedes asignar maxsum a [0]+[1] antes de iterar y ya.

  • @luisgustavoquispeabad1175
    @luisgustavoquispeabad1175 11 месяцев назад

    Yo lo resolvi mentalmente haciendo un recorrido del array y sumando la posicion actual con su siguiente y almacenar todas las sumas en otro array distinto para luego solo escoger el maximo valor de dicho array y fin. Aunque esta solucion esta muy interesantr y compleja

    • @edtecs48
      @edtecs48 9 месяцев назад

      Tu solución ocuparía mucha ram, además en todo caso las sumas debes irlas metiendo a una lista enlazada, ya que en un array puedes llegar a colapsar la ram

  • @otrieZ
    @otrieZ 2 месяца назад

    Ordenamos el array con merge sort de mayor a menor y sumamos los dos dos primeros

  • @AmperCNC
    @AmperCNC 3 месяца назад

    Yo solucionaba estas cosas tomando los 2 maximos y sumandolos tipo , usaba un vector provicional

  • @kabinero8722
    @kabinero8722 Год назад +3

    Programacion ats estaría orgulloso de ti 😊

  • @Python_12_Official
    @Python_12_Official Год назад +15

    Aprendiendo Programación antes de terminar mi secundaria😃

  • @danielosorio5113
    @danielosorio5113 3 месяца назад

    array.sort().reverse().slice(0,2).reduce((a,b...))

  • @alejandroBero
    @alejandroBero 2 месяца назад

    Y no se podia ordenar en forma desendente y suma la posicion 0 y 1. Que serian las mas grandes. Como la complican.

  • @joel.garcia
    @joel.garcia 7 месяцев назад

    A mí una vez me pusieron uno similar y sin querer lo ordené porque rue lo primero que se me vino a la mente jajajaj 😢 desde ahí aprendí a pensar dos veces antes de implementar

  • @facundobotta660
    @facundobotta660 5 месяцев назад

    Se vale hacer un sort de menor a mayor y luego solo sumar los ultimos dos valores del array ordenado? o es muy tramposo?

  • @julioantoniobeltresilvero8563
    @julioantoniobeltresilvero8563 6 месяцев назад +1

    Pues yo lo resolví guardando todas las sumas en un Array y devolviendo el Math.max de ese array 😂

  • @erikmesi27
    @erikmesi27 3 месяца назад

    En Scala, que es más funcional, quedaría la siguiente solución tan bonita:
    def maxAdjacentSum(array: Array[Int]) : Int = {
    array.sliding(2, 1).map(_.sum).max
    }

  • @jesusleivanavarro8610
    @jesusleivanavarro8610 5 месяцев назад

    Ordenas el Array de mayor a menor y sumas los elementos con índice 0 y 1 ó también ordenando el Array de menor a mayor y sumas los elementos con índice Array.length-1 y Array.length-2

  • @genisgilavert
    @genisgilavert 8 месяцев назад

    Eres un crack, pero sinceramente este problema es demasiado sencillo. A mi lo que me cuesta es el css, me tiene loco.

  • @osma88
    @osma88 Год назад +1

    Usando la función reduce(...)

  • @gatonegro2123
    @gatonegro2123 Год назад

    const MaxAdjacent = (nums) => nums.slice(1).reduce(Max,min,i)=>Match.max(max,min+nums[i]),}

  • @Avemamaria
    @Avemamaria 5 месяцев назад

    No se debería tener en cuenta la complejidad? Con divide y venceras

  • @noahkrossa7928
    @noahkrossa7928 5 месяцев назад

    Se puede usar recursividad para resolverlo.

  • @RooterDelWifiXs
    @RooterDelWifiXs 8 месяцев назад +1

    Qué tema y fuentes usas?

  • @nicogelato
    @nicogelato Год назад

    Lo primero que se me ocurrio fue lo siguiente:
    const maxAdjacentSum = (arr) => {

    return Math.max(...arr.map((e, index, arr) => {
    let numero = e
    let numeroConsecutivo = arr[index + 1]
    let suma = numero + numeroConsecutivo
    // Aqui es mejor -Infinity en lugar de 0, para tomar en cuenta numeros negativos, pero bueno, no lo habia pensado asi que lo dejo como me salio a la primera jaja
    let sumaMasGrande = 0

    if (suma > sumaMasGrande) {
    sumaMasGrande = suma
    }
    return sumaMasGrande
    }))
    }
    Luego, simplemente por diversión, lo hice de la siguiente forma:
    const maxAdjacentSum = (arr) => {

    return Math.max(...arr.map((e, i, arr) => {
    let numero = e
    let numeroSiguiente =
    typeof ( arr[ i + 1 ] ) == "number" ?
    arr[ i + 1 ] :
    0

    return numero + numeroSiguiente
    }))
    }
    // En esta segunda función, tuve que usar el typeof porque llega un momento en el que se intenta sumar el último elemento del array con el siguiente (que no existe) por lo que retorna un "NaN" , y hace imposible el uso del Math.max() (Ya que solo puede recibir números como argumento). Entonces, cuando eso suceda, simplemente cambio ese arr[ i + 1 ] por un 0. Y pipí cucú

    • @nicogelato
      @nicogelato Год назад

      El unico "problema" que se me ocurre (hasta ahora) es que, si el array proporcionado tiene demasiados elementos, el Math.max() podría llegar a fallar. Por lo que debería pensar una solución con arr.reduce() . Pero me niego momentaneamente

  • @SergioJWero
    @SergioJWero 9 месяцев назад

    Ojalá así fueran las entrevistas reales de faciles

  • @anretro4138
    @anretro4138 Год назад

    Entiendo a medias, hay varias cosas de ahí que no había visto pero más menos me hago una idea de lo que son, por ejemplo cont { length} = array
    Pregunta, voy a empezar mi práctica, algo así debería saberlo? No soy ni junior pero este tipo de cosas me desaniman mucho xd

  • @ramiroperezsanz6577
    @ramiroperezsanz6577 Год назад

    function maxAdjacentSum(array) {
    if (array.length < 2) {
    return null; // o cualquier otro valor apropiado si el array no contiene suficientes elementos
    }
    return array.slice(1).reduce((maxSum, current, index) =>
    Math.max(maxSum, current + array[index]), -Infinity);
    }

  • @jeissonmartinez7032
    @jeissonmartinez7032 3 месяца назад

    No lo e probado, pero si la lista está desordenada y solo suma el número de i con el contiguo y i => 0 es igual a 200 y i=>20 es igual a 50 siendo los dos números mayores, este código no podría ordenarlo o por lo menos como yo lo veo
    Corrección : son dos números adyacentes, entonces si esta bien
    Para hacerlo con una lista de números desordenados tendría que usar algún método de ordenamiento y en una array ordenado hacer ese método

  • @antoniodiaz1512
    @antoniodiaz1512 Год назад +1

    Una posible solución en swift sería:
    func midudev(_ lista: [Int]) -> Int{
    if(lista.isEmpty){
    return 0
    }
    else if(lista.count == 1){
    return lista[0]
    }
    else if(lista.count == 2){
    return lista[0] + lista[1]
    }
    else{
    let first = lista[0]
    let second = lista[1]
    let suma = first + second
    let rest = Array(lista.dropFirst())
    let max = midudev(rest)
    if(max > suma){
    return max
    }
    else{
    return suma
    }
    }
    }

    • @Ciencia_con_s
      @Ciencia_con_s Год назад

      Demasiados Ifs D:
      Se debería poder solamente con el for, en cualquier lenguaje...
      Es igual, un for que recorre todo, desde la segunda hasta la ultima posicion, sumando el actual y el anterior...
      Ordenad mayor a menor y devuelves el mas alto...
      No ocupas if 👀

  • @DonRammstyleGRLIVExFEARX
    @DonRammstyleGRLIVExFEARX 3 месяца назад

    No se escribirlo en codigo aun, pero mi logica me dice, ordenar la lista de menos a mayor, invertirla, sumar los primeros 2 valores y devolver el resultado. Estoy mal???

  • @MarcosBruDiaz
    @MarcosBruDiaz Год назад

    Puedo ser organizar los elementos del array de menor a mayor y seleccionar los dos últimos y sumarlos ?

  • @cannes7703
    @cannes7703 2 месяца назад

    Eso preguntsn en entrevistas a los programadores?

  • @fancudschye9120
    @fancudschye9120 Год назад

    no es mas facil hacer un math.max, guardar en mayor en una variable, luego quitarlo del array (pop) y hacer otro math.max?

    • @lGGMasterl
      @lGGMasterl Год назад

      No sería posible porque podrían ser dos números no adyacentes , ej : [9,1,4,2,3,8] , sacarlas el 9,8 que no son adyacentes , siendo la suma adyacente más grande 8,3

  • @FerniFrenito
    @FerniFrenito 5 месяцев назад

    Yo haría un algoritmo de select ya que la suma más grande siempre será la suma del más grande con el segundo más grande.

  • @bryanherreradev8055
    @bryanherreradev8055 Год назад

    Yo soy un atarantado de hacer cosas en one line, casi que te aseguro que te lo saco a punta de funciones de los array xd

  • @diegocancino5448
    @diegocancino5448 Год назад

    Literalmente ocupo los principios del burblesort para la solución un crack

  • @huevitok1829
    @huevitok1829 4 месяца назад

    No puedo ordenar la lista y devolver la suma de los 2 mas grandes?

  • @andres03ortega
    @andres03ortega 3 месяца назад

    Cual es la utilidad real de estos ejercicios? Como se aplican? Pregunta seria

  • @rigobersio.rigoberto
    @rigobersio.rigoberto 8 месяцев назад

    Ojalá la vida fuera tan simple.

    • @rigobersio.rigoberto
      @rigobersio.rigoberto 8 месяцев назад

      Además creo que el método empreado no es nada eficiente.

  • @gyakoo
    @gyakoo 5 месяцев назад

    La suma puede ser negativa con lo que inicializar a -Infinity no vale. Y hay que comparar valores absolutos.

  • @mariusavram3923
    @mariusavram3923 4 месяца назад

    Mierda loco , alfinal mi profesor de Java tenia razón , te ponen estas preguntas en la entrevista jajaja

  • @adolforubio5850
    @adolforubio5850 8 месяцев назад

    No sería más fácil ordenar el array de menor a mayor y sumar las últimas dos casillas del array???. El problema propuesto no indica que no se pueda ordenar.

  • @EmilioBurbano
    @EmilioBurbano 6 месяцев назад

    Lo malo de tener un conocimiento grande es que aveces no te puedes dar cuenta de lo que piden que en vez de hacer algo tan simple para el objetivo solicitado, te puedes llegar a complicar la vida creyendo que la solución era hacer una funcion que trabaje con cualquier array y no solo con el que te daban.

  • @Tuligarnio
    @Tuligarnio Год назад +1

    Esta sería una posible solución en Kotlin:
    fun main() {
    val numbers = listOf(2, 4, 1, 5, 6, 3)
    val result = maxAdjacentSum(numbers)

    println("result = $result")
    }
    fun maxAdjacentSum(numbers: List): Int {
    return numbers.zipWithNext { current, next ->
    current + next
    }.max()
    }

  • @christianmagnus1003
    @christianmagnus1003 Год назад

    La solución esta bien, recorres todo el arreglo siempre, ósea la complejidad siempre seria n, yendo un poco mas lejos y siendo un friki la respuesta podría ser n/2, si recorres el array hasta la mitad y dentro del mismo for que va hasta la mitad lo recorres de atrás hacia delante hasta la mitad, ósea vas a recorrer el array de nuevo n/2 veces no n, si alguien quiere el código se lo paso

  • @khriz571
    @khriz571 7 месяцев назад

    ¿Cómo puedo tener su cursor en el texto como él? El que "parpadea", gracias!

  • @Pelusa86
    @Pelusa86 6 месяцев назад

    Empeze a meterme en Laa programación hace muy poco tiempo. Y me cruce este video y no entendí absolutamemte nada jaja. Por qe te preguntarían esto en una entrevista y para qe serviría un código así? Qe función cumple. ?

  • @tomasgoldenberg1066
    @tomasgoldenberg1066 Год назад +4

    const [biggest,secondbigest] = array.sort().reverse()
    return biggest+ secondbiggest

    • @ocarmora
      @ocarmora 9 месяцев назад

      En el momento que haces un sort, pierdes la condición de que sean adyacentes. Eso altera tanto el resultado como las condiciones del enunciado

  • @IsmaelGuimarais
    @IsmaelGuimarais Год назад

    No puede ser ordenándolos primero? const maxAdjacentSum = (arr) => {
    arr.sort((a,b) => a-b)
    return arr[arr.length-1] + arr[arr.length-2]
    }

  • @quizroaxd648
    @quizroaxd648 Год назад

    Hola soy nuevo sub, podrás hacer un vídeo de cómo hacer una campana para notificaciones??

  • @davidreyna7695
    @davidreyna7695 Год назад +1

    Gracias me rompiste 3 neuronas

  • @DevsSebas
    @DevsSebas 5 месяцев назад

    Jsjsjs estaba pensando en kotlin sin querer y ya estaba simplificando el if 😅

  • @elvichoxd2907
    @elvichoxd2907 6 месяцев назад

    HOLA UNA PREGUNTA COMO LE PUEDO HACER PARA PENSAR ASI??

  • @megaprotoman12
    @megaprotoman12 Год назад +5

    Acá en Perú te piden de 5 a 10 años de experiencia para acceder a la entrevista... Supongo que la culpa es de RRHH

    • @TheJaviercrafter
      @TheJaviercrafter Год назад +1

      No siempre, vivo en Perú, no termine la carrera y he tenido muchas entrevistas, antes de mi primer trabajo y durante mis primeros trabajos seguía teniendo ofertas en LinkedIn

    • @TheJaviercrafter
      @TheJaviercrafter Год назад +1

      Lo que si es verdad es que la mayoría te rechazan... Pero que no te dan la entrevista es falso 😅

    • @megaprotoman12
      @megaprotoman12 Год назад +1

      @@TheJaviercrafter Bueno, sí es falso lo que dije 👀👀, pero a lo que me refiero es que piden demasiadas habilidades y realmente años de experiencia para conseguir un trabajo, y si bien sí te dan la entrevista, mayormente te rechazan; y supongo que es por no cumplir la infinidad de requisitos... :(

  • @GabiSnow
    @GabiSnow 8 месяцев назад

    En mi solucion inicializaria maxSum con la suma de los dos primeros valores del array, y el for lo comenzaria en i=1

  • @shermanperez3386
    @shermanperez3386 10 месяцев назад +1

    Ordeno el arreglo de forma ascendente y sumo los últimos dos dígitos, wenos días

    • @edtecs48
      @edtecs48 9 месяцев назад

      Dice elementos ADYACENTES, si los ordenas ya no lo serían

  • @anomfb
    @anomfb 2 месяца назад

    Cuando dijo, que no se podia usar if, inmediatamente pense en operador ternario xd 😅

  • @ferreiradelima96
    @ferreiradelima96 6 месяцев назад

    Which data structure is used in this tutorial?

  • @poloq3D
    @poloq3D Год назад +14

    Ese algoritmo tiene complejidad temporal O(n), dado que existen algoritmos de ordenación de menor complejidad temporal se podría ordenar el array y sumar los dos últimos directamente (o hacer una copia del array en cuestión y liberar posteriormente la memoria)

    • @Rami10071
      @Rami10071 Год назад +15

      La condicion es la suma max entre adyacentes. No la suma maxima solamente. Al ordenar perdes la condición de adyacencia.

    • @maxcapoeira10
      @maxcapoeira10 Год назад +8

      No existen algoritmos de menor complejidad, no podes NO ver todos los elementos y ordernarlos

    • @vladimirreyes1938
      @vladimirreyes1938 Год назад +1

      Hay algoritmos mas rapido que n log n ?, Pregunta seria realmente no se.

    • @maxcapoeira10
      @maxcapoeira10 Год назад

      @@vladimirreyes1938 sip, si sabes info de los datos si, por ej counting sort

    • @amaury_permer
      @amaury_permer Год назад

      ​@@vladimirreyes1938para este ejemplo no sabría decirte pero cosas más rápidas que logn si hay, lo más rápido que puede ser algo es O(1)