題目:
2. 兩數(shù)相加
解法:
因?yàn)榱斜硎悄嫘虻? 所以恰好就從個(gè)位開始. 所以我們只需要對(duì)應(yīng)的數(shù)位相加.
然后再判斷是否進(jìn)位, 如果進(jìn)位則進(jìn)位標(biāo)志位設(shè)置為true, 否則為false. 用于下一階段的計(jì)算之中.
最后別忘了可能會(huì)有進(jìn)位, 不能直接退出, 需要再判斷一下是否再加上一個(gè)數(shù)位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;
}