思路:考虑下面几种情况
1、考虑最高位进位
2、考虑l1和l2长度不一样
3、考虑l1、l2为空
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int add = 0;
ListNode retNode = new ListNode(0);
ListNode curL1 = l1;
ListNode curL2 = l2;
ListNode curRet = retNode;
// 2 考虑l1与l2长度不一样
while (curL1 != null || curL2 != null) {
curRet.next = new ListNode(0);
curRet = curRet.next;
int tmpSum = (curL1 != null ? curL1.val : 0) + (curL2 != null ? curL2.val : 0) + add;
add = tmpSum / 10;
curRet.val = tmpSum % 10;
// 3 考虑l1或l2为空的情况
curL1 = curL1 == null ? curL1 : curL1.next;
curL2 = curL2 == null ? curL2 : curL2.next;
}
// 1 考虑最高位进位
if (add > 0) {
curRet.next = new ListNode(add);
}
return retNode.next;
}