2. Add Two Numbers - LeetCode
Question
Solution
题目大意:两个链表对应的元素相加,满10进1,反两个链表相加后的链表
思路:同时遍历两个链表,同时构造相加后的链表,满10进1,用一个数来记录进位
Java实现:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ans = new ListNode(0);
ListNode curL1 = l1;
ListNode curL2 = l2;
ListNode curAns = ans;
int last = 0;
ListNode curAnsPre = ans;
while (curL1 != null || curL2 != null) {
int valL1 = 0;
int valL2 = 0;
if (curL1 != null) {
valL1 = curL1.val;
curL1 = curL1.next;
}
if (curL2 != null) {
valL2 = curL2.val;
curL2 = curL2.next;
}
curAns.val = valL1 + valL2 + last;
if (curAns.val >= 10) {
curAns.val -= 10;
last = 1;
} else {
last = 0;
}
curAns.next = new ListNode(1);
curAnsPre = curAns;
curAns = curAns.next;
}
curAnsPre.next = last == 0 ? null : curAnsPre.next;
return ans;
}