Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

715
Vistas
Dada una lista enlazada no ordenada, encuentre el elemento con el valor más grande. (JavaScript)

Soy nuevo en la codificación y el aprendizaje de problemas de listas enlazadas. Encontré una solución pero realmente no entiendo lo que hacen. ¿Qué significa (!node.next)? ¿Es lo mismo que node.next != null?

Además, no entiendo el retorno de esta línea (node.value > mayorValueInRest ? node.value : mayorValueInRest);

¿Significa que si node.value es mayor que mayorValueInRest, entonces node.value = mayorValueInRest?

aquí está la solución

 function findMax(node) { if (!node.next) { return node.value; } else { const biggestValueInRest = findMax(node.next); return (node.value > biggestValueInRest ? node.value : biggestValueInRest); } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Qué significa (!node.next)? ¿Es lo mismo que node.next != null?

El ! es el operador de negación, niega el valor colocado delante de él.

por ejemplo !node.next es lo mismo que node.next == false .

En este caso, !node.next devolverá true si node.next es un valor falso como false , null o undefined .

En la declaración if de su código, devolverá el valor del nodo actual si no hay un siguiente nodo vinculado a ese nodo ya que, en las listas vinculadas, los nodos contienen un valor y un enlace al siguiente nodo.

Además, no entiendo el retorno de esta línea (node.value > mayorValueInRest ? node.value : mayorValueInRest);

¿Significa que si node.value es mayor que mayorValueInRest, entonces node.value = mayorValueInRest?

Ese es un operador ternario, es como un if abreviado que devuelve un valor.

return (node.value > biggestValueInRest ? node.value : biggestValueInRest);

sería lo mismo que:

 if (node.value > biggestValueInRest) return node.value; else return biggestValueInRest;

La sintaxis del operador ternario es básicamente:

"condition" ? "value to return if true" : "value to return if false"

Y para responder completamente a su pregunta.

Encontré una solución pero realmente no entiendo lo que hacen.

La solución proporcionada es recursiva , se llamará a sí mismo para cada nodo en las listas enlazadas hasta que llegue al final (el que es node.next está vacío), y una vez hecho esto, devolverá el mayor valor de cada comparación. desde allí.

Las funciones recursivas no siempre son una buena práctica, ya que su complejidad de tiempo puede aumentar dependiendo de cómo las implementó el desarrollador.

En este caso, sería O(n) , lo que significa que es lineal, lo que no está nada mal para una función recursiva.

Esto significa que el tiempo que tardará la función en finalizar se verá afectado en proporción al número de elementos que n la lista enlazada.

Entonces, si toma 1 por nodo, entonces 100 nodos serían 100 para que la función finalice.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hubiera sido más simple en python, pero lo que puedes hacer es crear una función que se vea así, se explicará más adelante

asumiendo que la lista consiste solo en valores numéricos

 Function(ListItems) { Let biggest_val = 0; For (let i = 0; i < ListItems.length; i++) { If (LisItems[i] > biggest_val) { biggest_val = ListItems[i] } } }

Primero estamos inicializando una variable para que contenga el valor más grande de la lista para nosotros, y luego creando un ciclo for para recorrer la lista y verificar si el valor actual es mayor que nuestro valor más grande actual, si es así, actualice el valor de nuestro valor más grande .

el nodo.valor> mayorValueInRest? nodo.valor: mayorValueInRest se llama [operador de turno][1] es una declaración si abreviada, pero dado que recién está comenzando, es mejor seguir con la tradicional

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda