class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = new ListNode();
ListNode p = head;
int carry = 0;
int num1 = 0;
int num2 = 0;
// 只要两个链表有一个不为空或者carry为1,链表就还要再进行计算
while (l1 != null || l2 != null || carry != 0) {
// 如果链表到达末尾了就用0代替
if (l1 != null) {
num1 = l1.val;
l1 = l1.next;
} else {
num1 = 0;
}
if (l2 != null) {
num2 = l2.val;
l2 = l2.next;
} else {
num2 = 0;
}
int total = num1 + num2 + carry;
// 计算进位
carry = total / 10;
// 求余
total %= 10;
ListNode n = new ListNode(total);
p.next = n;
p = p.next;
}
return head.next;
}
}
l1 / l2
中较长的那个链表的长度原文:https://www.cnblogs.com/linzedian/p/13945019.html