兩數相加

解題思路
按位計算,若l1,l2,進位中有一個值不為0均有計算價值,若l1,l2當前位為null則記為0,調用自身計算下一位,直至三個值均為0,表示計算完畢,返回空節(jié)點。

代碼

/**
 * 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) {
        //初始參數 進位為0
        return nextNode(l1,l2,0);
    }
    ListNode nextNode(ListNode l1, ListNode l2, int add) {
        //當前位之中 l1,l2,進位中有一個不為0就應當計算
        if (l1 != null || l2 != null || add!=0) {
            //若l1,l2中此位為空 則生成一個空節(jié)點 值為0 下一個節(jié)點為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 {
            //當前進位中無l1,l2,進位 直接返回空節(jié)點
            return null;
        }
    }
}

作者:hetun-code
鏈接:https://leetcode-cn.com/problems/add-two-numbers/solution/2liang-shu-xiang-jia-javashi-yong-di-gui-38du/
來源:力扣(LeetCode)
著作權歸作者所有。商業(yè)轉載請聯系作者獲得授權,非商業(yè)轉載請注明出處。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容