Я практикую алгоритмы и решаю https://leetcode.com/problems/add-two-numbers/. Я делаю это в JavaScript. Я могу получить правильный номер, но не могу вернуть ответ в виде обратного связанного списка. Может кто-нибудь помочь мне найти ошибку в моем коде и завершить этот последний шаг?
Мне удалось выполнить итерацию в обоих списках, используя unshift (добавив каждый в начало массива). Затем сделал соединение с массивами и вызвал parseInt для преобразования их в целые числа. Добавление их тривиально, поэтому никаких проблем нет. Проблема для меня заключается в том, что функция должна возвращать связанный список (в обратном порядке). Я не могу успешно получить доступ к значению вновь созданного узла. Конечно, я не думаю, что они использовали синтаксис es6 в классе LinkedList, но все же.
function ListNode(val) {
this.val = val;
this.next = null;
}
@param {ListNode} l1
@param {ListNode} l2
@return {ListNode}
var addTwoNumbers = function(l1, l2) {
let num1 = [];
let num2 = [];
let current1 = l1;
let current2 = l2;
while(current1){
num1.unshift(current1.val);
current1 = current1.next;
console.log(num1);
}
while(current2){
num2.unshift(current2.val);
current2 = current2.next;
console.log(num2);
}
let number1 = parseInt(num1.join(''));
console.log(number1);
let number2 = parseInt(num2.join(''));
console.log(number2);
console.log("Number 1 is " + number1);
console.log("Number 2 is " + number2);
let result = number1 + number2;
console.log(result);
let liststr = result.toString();
console.log(liststr);
let node = new ListNode();
let current = node;
for (let i = liststr.length - 1; i >= 0; i--){
if(current.val !== undefined){
node.next = new ListNode(liststr[i]);
current = current.next;
}
else {
node.value = liststr[i];
current = current.next;
}
}
return node;
};
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Expected Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
807 следует преобразовать в связанный список 7-> 0-> 8
Я получаю сообщение об ошибке во время выполнения "Ошибка типа: не удалось прочитать свойство 'val' из null".