题目描述
https://leetcode.cn/problems/add-two-numbers/
解题思路
本题就是将两个链表的的值进行相加,但是例如343+564=807,此时就会有进位,所以我们新生成的链表节点的值一定是10的余数,进位用temp变量来表示 temp=n/10。
流程就是:遍历2个链表,将余数作为新节点的值,进位就相加在下一位,注意最后需要处理进位。
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = null, cur = null;
int temp = 0;
while (l1 != null || l2 != null) {
int n1 = l1 == null ? 0 : l1.val;
int n2 = l2 == null ? 0 : l2.val;
int sum = n1 + n2 + temp;
if (head == null) {
head = cur = new ListNode(sum % 10);
}else {
cur.next = new ListNode(sum % 10);
cur = cur.next;
}
// 获取进位
temp = sum / 10;
if (l1 != null) l1 = l1.next;
if (l2 != null) l2 = l2.next;
}
// 处理最后进位的temp
if (temp > 0) {
cur.next = new ListNode(temp);
}
return head;
}
}