8 两数相加
2. 两数相加 - 力扣(LeetCode)
题解:模拟
我们直接将两个头节点的值取出进行相加即可,相加完之后取余(就是只拿个位数的值),然后将其生成一个节点,穿起来即可,同时要记录其十位数字与下一次的链表头节点进行相加,这样一直迭代下去就可以了
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null) return l2;
if(l2 == null) return l1;
ListNode head = new ListNode(0);
ListNode result = head;
int record = 0;
while(l1 != null && l2 != null) {
int sum = l1.val+l2.val + record;
int count = sum % 10;
record = sum / 10;
head.next = new ListNode(count);
head = head.next;
l1 = l1.next;
l2 = l2.next;
}
while(l1 != null){
int sum = l1.val + record;
int count = sum % 10;
record = sum / 10;
head.next = new ListNode(count);
head = head.next;
l1 = l1.next;
}
while(l2 != null) {
int sum = l2.val + record;
int count = sum % 10;
record = sum / 10;
head.next = new ListNode(count);
head = head.next;
l2 = l2.next;
}
if(record != 0){
head.next = new ListNode(record);
}
return result.next;
}
}