es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Soy nuevo en la programación y estoy aprendiendo 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?

Tampoco entiendo esta línea:

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

¿Significa que si node.value es mayor que biggestValueInRest, entonces node.value es igual a biggestValueInRest?

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);
  }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La explicación del código es la siguiente:

    !node.next significa “si no hay ningún valor para node.next, o si node.next es null o undefined“. Es equivalente a node.next == null o node.next === null o node.next === undefined. Por lo tanto, en este código, se está verificando si el nodo actual es el último nodo en la lista enlazada.

    La línea return (node.value > biggestValueInRest ? node.value : biggestValueInRest); es un operador ternario que devuelve el valor de node.value o biggestValueInRest, dependiendo de si node.value es mayor que biggestValueInRest. Entonces, si node.value es mayor que biggestValueInRest, devolverá node.value, de lo contrario devolverá biggestValueInRest. En otras palabras, devuelve el valor máximo entre el nodo actual y el resto de la lista enlazada.

    En resumen, el código encuentra el valor máximo en una lista enlazada recorriendo de forma recursiva cada nodo hasta llegar al último nodo, y comparando los valores en el camino.

Comments are closed.