給你兩個?非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照?逆序?的方式存儲的
給你兩個 非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點只能存儲 一位 數(shù)字。
請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。
你可以假設除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。

/**
?*?Definition?for?singly-linked?list.
?*?public?class?ListNode?{
?*?????int?val;
?*?????ListNode?next;
?*?????ListNode()?{}
?*?????ListNode(int?val)?{?this.val?=?val;?}
?*?????ListNode(int?val,?ListNode?next)?{?this.val?=?val;?this.next?=?next;?}
?*?}
?*/
class?Solution?{
????public?ListNode?addTwoNumbers(ListNode?l1,?ListNode?l2)?{
????????
????????//?Initialize?variables
????????ListNode?result?=?new?ListNode(0);?//?Head?node
????????ListNode?prevNode?=?result;
????????int?carry?=?0;
????????
????????while?(l1?!=?null?||?l2?!=?null)?{
????????????int?x?=?(l1?!=?null)???l1.val?:?0;
????????????int?y?=?(l2?!=?null)???l2.val?:?0;
????????????int?sum?=?x?+?y?+?carry;
????????????
????????????//?Update?carry
????????????if?(sum?>?9)?{
????????????????carry?=?1;
????????????????sum?%=?10;
????????????}?else?{
????????????????carry?=?0;
????????????}
????????????
????????????//?Update?the?linked?list
????????????ListNode?currentNode?=?new?ListNode(sum);
????????????prevNode.next?=?currentNode;
????????????prevNode?=?currentNode;
????????????
????????????//?Move?to?the?next?nodes?of?l1?and?l2
????????????if?(l1?!=?null)?{
????????????????l1?=?l1.next;
????????????}
????????????if?(l2?!=?null)?{
????????????????l2?=?l2.next;
????????????}
????????}
????????//?Check?if?there?is?any?carry?left
????????if?(carry?!=?0)?{
????????????prevNode.next?=?new?ListNode(carry);
????????}
????????
????????//?Return?the?resulting?list
????????return?result.next;
????}
}