День 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;
}
}