解題思路
按位計(jì)算边翁,若l1,l2,進(jìn)位中有一個(gè)值不為0均有計(jì)算價(jià)值蛛枚,若l1,l2當(dāng)前位為null則記為0,調(diào)用自身計(jì)算下一位墨状,直至三個(gè)值均為0图筹,表示計(jì)算完畢帅刀,返回空節(jié)點(diǎn)。
代碼
/**
* 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) {
//初始參數(shù) 進(jìn)位為0
return nextNode(l1,l2,0);
}
ListNode nextNode(ListNode l1, ListNode l2, int add) {
//當(dāng)前位之中 l1,l2,進(jìn)位中有一個(gè)不為0就應(yīng)當(dāng)計(jì)算
if (l1 != null || l2 != null || add!=0) {
//若l1,l2中此位為空 則生成一個(gè)空節(jié)點(diǎn) 值為0 下一個(gè)節(jié)點(diǎn)為null
ListNode next1 = l1 != null ? l1 : new ListNode(0,null);
ListNode next2 = l2 != null ? l2 : new ListNode(0,null);
return new ListNode((next1.val + next2.val + add) % 10, nextNode(next1.next, next2.next, (next1.val + next2.val + add) / 10));
} else {
//當(dāng)前進(jìn)位中無(wú)l1,l2,進(jìn)位 直接返回空節(jié)點(diǎn)
return null;
}
}
}
作者:hetun-code
鏈接:https://leetcode-cn.com/problems/add-two-numbers/solution/2liang-shu-xiang-jia-javashi-yong-di-gui-38du/
來(lái)源:力扣(LeetCode)
著作權(quán)歸作者所有远剩。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)扣溺,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。