День 2

Вам даны два непустых связанных списка, представляющих два неотрицательных целых числа. Цифры хранятся в обратном порядке, и каждый из их узлов содержит одну цифру. Добавьте два числа и верните их в виде связанного списка.

Вы можете предположить, что эти два числа не содержат начальных нулей, кроме самого числа 0.

Пример:

Ввод: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Вывод: 7 -> 0 -> 8
Объяснение: 342 + 465 = 807.

/**
* Определение односвязного списка.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; этот.следующий = следующий; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode res = null;
ListNode prev = null;
ListNode temp = null;
int Carry = 0 , sum;

//Пока оба LL не равны NULL
while (l1 != null || l2 != null ){

//проверить, имеет ли узел значение или нет, если не присвоить ему нулевое значение
sum = Carry + (l1 != null ? l1.val : 0 )
+ (l2 != null ? l2.val : 0);

// получение остатка
Carry = (sum ›= 10) ? 1: 0;

//значение, которое мы собираемся поместить в новый узел
sum = sum % 10;

//создать новый узел присвоить значение
temp = new ListNode(sum);

//получение адреса указателя
if (res == null){
res = temp;
} else {
// соединяем новый узел с остальным узлом
prev.next = temp;
}

// перемещаем текущий узел как предыдущий
> prev = temp;


// двигаться вперед, если не null
if (l1 != null){
l1 = l1.next;
}

//движемся вперед, если не null
if (l2 != null){
l2 = l2.next;
}

}

//если в конце остался остаток
// создаем новый узел и связываем его.
if (carry › 0){
temp. next = new ListNode(carry);
}

return res;
}
}