難度:中等
題目:
給出兩個(gè)?非空 的鏈表用來表示兩個(gè)非負(fù)的整數(shù)。其中,它們各自的位數(shù)是按照?逆序?的方式存儲(chǔ)的,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ)?一位?數(shù)字。
如果,我們將這兩個(gè)數(shù)相加起來,則會(huì)返回一個(gè)新的鏈表來表示它們的和。
您可以假設(shè)除了數(shù)字 0 之外,這兩個(gè)數(shù)都不會(huì)以 0?開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
來源:力扣(LeetCode)
解答:
/**
?*?Definition?for?singly-linked?list.
?*?public?class?ListNode?{
?*?????int?val;
?*?????ListNode?next;
?*?????ListNode(int?x)?{?val?=?x;?}
?*?}
?*/
class?Solution?{
????public?ListNode?addTwoNumbers(ListNode?l1,?ListNode?l2)?{
?????????if(l1?==?null?&&?l2?==?null)?return?null;
?????????ListNode?dummy?=?new?ListNode(0);
?????????ListNode?head?=?dummy;
?????????int?addOne?=?0;
?????????while(l1?!=null?||?l2!=null?||?addOne?!=?0)?{
?????????????int?val1?=?l1?==?null???0?:l1.val;
?????????????int?val2?=?l2?==?null???0?:l2.val;
?????????????int?sum?=?val1?+?val2?+?addOne;
?????????????head.next?=?new?ListNode(sum%10);
?????????????head?=head.next;
?????????????addOne?=sum/10;
?????????????if(l1?!=?null)?l1?=?l1.next;
?????????????if(l2?!=?null)?l2?=?l2.next;
?????????}
?????????return?dummy.next;
????}
}
重新理解了單鏈表的運(yùn)算方式,學(xué)習(xí)了大佬的編程思想。
