题目:
2. 两数相加
解法:
因为列表是逆序的, 所以恰好就从个位开始. 所以我们只需要对应的数位相加.
然后再判断是否进位, 如果进位则进位标志位设置为true, 否则为false. 用于下一阶段的计算之中.
最后别忘了可能会有进位, 不能直接退出, 需要再判断一下是否再加上一个数位1;
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode res = new ListNode(0);
ListNode resHead = res;
boolean isCarry = false;
while ((l1 != null) || (l2 != null)) {
int sum = (l1 != null ? l1.val : 0) + (l2 != null ? l2.val : 0);
sum = isCarry ? (sum + 1) : sum;
isCarry = sum > 9;
res.next = new ListNode(sum % 10);
res = res.next;
l1 = l1 != null ? l1.next : null;
l2 = l2 != null ? l2.next : null;
}
res.next = isCarry ? new ListNode(1) : null;
return resHead.next;
}