Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

709
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!