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

180
Vistas
"Error de tipo: no se pueden establecer propiedades de indefinido (estableciendo 'siguiente')"

Entrada: dadas dos listas enlazadas no vacías que representan dos enteros no negativos. Los dígitos se almacenan en orden inverso y cada uno de sus nodos contiene un solo dígito. Sume los dos números y devuelva la suma como una lista enlazada.

Ilustración de entrada y salida (abierta para su comprensión)

 var addTwoNumbers = function(l1, l2) { let carry = 0, sum = 0; let runningNode = new ListNode(0, null); let headNode = runningNode; while (l1 !== null || l2 !== null) { sum = l1 != null ? l1.val : 0 + l2 != null ? l2.val : 0 + carry; carry = 0; // Error is in below line it states "TypeError: Cannot set properties of undefined (setting 'next')" runningNode.next = ListNode(sum % 10, null) runningNode = runningNode.next; //How to fix it? if (l1) { l1.next; } if (l2) { l2.next; } } if (carry) { runningNode.next = ListNode(carry); } return headNode;

};

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Varios asuntos:

  • Al llamar al constructor, se necesita new ; de lo contrario, this no está definido y las referencias como this.next no son válidas. Esta corrección es necesaria en dos lugares de su código.

  • En la asignación a sum , el operador + tiene prioridad sobre el ? : operador, pero en su caso lo quiere de otra manera, por lo que debe agregar paréntesis.

  • El carry nunca se establece en nada más que 0. Debería obtener 1 cuando la suma es mayor que 9.

  • El resultado final siempre devolverá una lista que comienza con 0, que es un nodo ficticio al que hace referencia head . Esto hace que el resultado sea diez veces demasiado grande. Devuelve el siguiente nodo.

Código corregido:

 var addTwoNumbers = function(l1, l2) { let carry = 0, sum = 0; let runningNode = new ListNode(0, null); let headNode = runningNode; while (l1 !== null || l2 !== null) { // Use parentheses to make sure the addition happens last: sum = (l1 != null ? l1.val : 0) + (l2 != null ? l2.val : 0) + carry; // Need to set carry carry = Math.floor(sum / 10); // Need "new" when calling constructor runningNode.next = new ListNode(sum % 10, null); runningNode = runningNode.next; // Must assign! if (l1) { l1 = l1.next; } if (l2) { l2 = l2.next; } } if (carry) { // Must call with "new": runningNode.next = new ListNode(carry); } return headNode.next; // skip the zero node };
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