LeetCode- 2. 两数相加

Evernote Export

题目

给出两个 非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序的方式存储的,并且它们的每个节点只能存储一位数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2>4>3)+(5>6>4)
输出:7>0>8
原因:342+465=807

思考

  • 正向思维
    • 由题意可知,已知的两个链表是非空且整数是逆序存储的,正好符合两数相加低位优先计算的原则。
    • 为了最终用一个新链表表示已知链表的和,模拟一下两数从低位开始计算得出的结果。
    • 这个结果可能会超过10,所以需保留进位pre, cur为进位之后剩余的个位数,保存在新的链表的新节点中。

题解


/**
 * 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) {
        ListNode res = new ListNode(0);
        ListNode head = res;
        int pre = 0;
        while(l1 != null && l2 != null) {
            int cur = l1.val + l2.val + pre;
            // System.out.println(cur +","+ pre);
            if(cur > 9){
                pre = cur / 10;
                cur = cur % 10;
            }else {
                pre = 0;
            }
            res.next = new ListNode(cur);
            res = res.next;
            l1 = l1.next;
            l2 = l2.next;
        }
        while(l1 != null) {
            int cur = l1.val + pre;
             if(cur > 9){
                pre = cur / 10;
                cur = cur % 10;
            }else {
                pre = 0;
            }
            res.next = new ListNode(cur);
            res = res.next;
            l1 = l1.next;
        }
        while(l2 != null) {
            int cur = l2.val + pre;
             if(cur > 9){
                pre = cur / 10;
                cur = cur % 10;
            }else {
                pre = 0;
            }
            res.next = new ListNode(cur);
            res = res.next;
            l2 = l2.next;
        }
        if(pre != 0){
             res.next = new ListNode(pre);
        }
        return head.next;
    }
}
</div><center style="display:none !important;visibility:collapse !important;height:0 !important;white-space:nowrap;width:100%;overflow:hidden">%23%23%23%23%20%E9%A2%98%E7%9B%AE%0A%3E%E7%BB%99%E5%87%BA%E4%B8%A4%E4%B8%AA%C2%A0%60%E9%9D%9E%E7%A9%BA%60%E7%9A%84%E9%93%BE%E8%A1%A8%E7%94%A8%E6%9D%A5%E8%A1%A8%E7%A4%BA%E4%B8%A4%E4%B8%AA%60%E9%9D%9E%E8%B4%9F%60%E7%9A%84%E6%95%B4%E6%95%B0%E3%80%82%E5%85%B6%E4%B8%AD%EF%BC%8C%E5%AE%83%E4%BB%AC%E5%90%84%E8%87%AA%E7%9A%84%E4%BD%8D%E6%95%B0%E6%98%AF%E6%8C%89%E7%85%A7%C2%A0%60%E9%80%86%E5%BA%8F%C2%A0%60%E7%9A%84%E6%96%B9%E5%BC%8F%E5%AD%98%E5%82%A8%E7%9A%84%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%AE%83%E4%BB%AC%E7%9A%84%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E5%8F%AA%E8%83%BD%E5%AD%98%E5%82%A8%60%C2%A0%E4%B8%80%E4%BD%8D%C2%A0%60%E6%95%B0%E5%AD%97%E3%80%82%0A%E5%A6%82%E6%9E%9C%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%86%E8%BF%99%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%9B%B8%E5%8A%A0%E8%B5%B7%E6%9D%A5%EF%BC%8C%E5%88%99%E4%BC%9A%E8%BF%94%E5%9B%9E%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%E9%93%BE%E8%A1%A8%E6%9D%A5%60%E8%A1%A8%E7%A4%BA%E5%AE%83%E4%BB%AC%E7%9A%84%E5%92%8C%60%E3%80%82%0A%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%81%87%E8%AE%BE%E9%99%A4%E4%BA%86%E6%95%B0%E5%AD%97%200%20%E4%B9%8B%E5%A4%96%EF%BC%8C%E8%BF%99%E4%B8%A4%E4%B8%AA%E6%95%B0%E9%83%BD%E4%B8%8D%E4%BC%9A%E4%BB%A5%200%C2%A0%E5%BC%80%E5%A4%B4%E3%80%82%0A%20%0A%20%0A**%E7%A4%BA%E4%BE%8B%EF%BC%9A**%0A%0A%3E%E8%BE%93%E5%85%A5%EF%BC%9A%24(2%20-%3E%204%20-%3E%203)%20%2B%20(5%20-%3E%206%20-%3E%204)%24%0A%E8%BE%93%E5%87%BA%EF%BC%9A%247%20-%3E%200%20-%3E%208%24%0A%E5%8E%9F%E5%9B%A0%EF%BC%9A%24342%20%2B%20465%20%3D%20807%24%0A%0A%23%23%23%23%20%E6%80%9D%E8%80%83%0A-%20%E6%AD%A3%E5%90%91%E6%80%9D%E7%BB%B4%0A%20%20%20%20-%20%E7%94%B1%E9%A2%98%E6%84%8F%E5%8F%AF%E7%9F%A5%EF%BC%8C%E5%B7%B2%E7%9F%A5%E7%9A%84%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E6%98%AF%E9%9D%9E%E7%A9%BA%E4%B8%94%E6%95%B4%E6%95%B0%E6%98%AF%E9%80%86%E5%BA%8F%E5%AD%98%E5%82%A8%E7%9A%84%EF%BC%8C%E6%AD%A3%E5%A5%BD%E7%AC%A6%E5%90%88%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0%E4%BD%8E%E4%BD%8D%E4%BC%98%E5%85%88%E8%AE%A1%E7%AE%97%E7%9A%84%E5%8E%9F%E5%88%99%E3%80%82%0A%20%20%20%20-%20%E4%B8%BA%E4%BA%86%E6%9C%80%E7%BB%88%E7%94%A8%E4%B8%80%E4%B8%AA%E6%96%B0%E9%93%BE%E8%A1%A8%E8%A1%A8%E7%A4%BA%E5%B7%B2%E7%9F%A5%E9%93%BE%E8%A1%A8%E7%9A%84%E5%92%8C%EF%BC%8C%E6%A8%A1%E6%8B%9F%E4%B8%80%E4%B8%8B%E4%B8%A4%E6%95%B0%E4%BB%8E%E4%BD%8E%E4%BD%8D%E5%BC%80%E5%A7%8B%E8%AE%A1%E7%AE%97%E5%BE%97%E5%87%BA%E7%9A%84%E7%BB%93%E6%9E%9C%E3%80%82%0A%20%20%20%20-%20%E8%BF%99%E4%B8%AA%E7%BB%93%E6%9E%9C%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%B6%85%E8%BF%8710%EF%BC%8C%E6%89%80%E4%BB%A5%E9%9C%80%E4%BF%9D%E7%95%99%E8%BF%9B%E4%BD%8D%60pre%60%2C%20cur%E4%B8%BA%E8%BF%9B%E4%BD%8D%E4%B9%8B%E5%90%8E%E5%89%A9%E4%BD%99%E7%9A%84%E4%B8%AA%E4%BD%8D%E6%95%B0%EF%BC%8C%E4%BF%9D%E5%AD%98%E5%9C%A8%E6%96%B0%E7%9A%84%E9%93%BE%E8%A1%A8%E7%9A%84%E6%96%B0%E8%8A%82%E7%82%B9%E4%B8%AD%E3%80%82%0A%0A%23%23%23%23%20%E9%A2%98%E8%A7%A3%0A%60%60%60%60java%0A%0A%2F**%0A%C2%A0*%C2%A0Definition%C2%A0for%C2%A0singly-linked%C2%A0list.%0A%C2%A0*%C2%A0public%C2%A0class%C2%A0ListNode%C2%A0%7B%0A%C2%A0*%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0int%C2%A0val%3B%0A%C2%A0*%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0ListNode%C2%A0next%3B%0A%C2%A0*%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0ListNode(int%C2%A0x)%C2%A0%7B%C2%A0val%C2%A0%3D%C2%A0x%3B%C2%A0%7D%0A%C2%A0*%C2%A0%7D%0A%C2%A0*%2F%0Aclass%C2%A0Solution%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0public%C2%A0ListNode%C2%A0addTwoNumbers(ListNode%C2%A0l1%2C%C2%A0ListNode%C2%A0l2)%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0ListNode%C2%A0res%C2%A0%3D%C2%A0new%C2%A0ListNode(0)%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0ListNode%C2%A0head%C2%A0%3D%C2%A0res%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0int%C2%A0pre%C2%A0%3D%C2%A00%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0while(l1%C2%A0!%3D%C2%A0null%C2%A0%26%26%C2%A0l2%C2%A0!%3D%C2%A0null)%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0int%C2%A0cur%C2%A0%3D%C2%A0l1.val%C2%A0%2B%C2%A0l2.val%C2%A0%2B%C2%A0pre%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2F%2F%C2%A0System.out.println(cur%C2%A0%2B%22%2C%22%2B%C2%A0pre)%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0if(cur%C2%A0%3E%C2%A09)%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0pre%C2%A0%3D%C2%A0cur%C2%A0%2F%C2%A010%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0cur%C2%A0%3D%C2%A0cur%C2%A0%25%C2%A010%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7Delse%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0pre%C2%A0%3D%C2%A00%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res.next%C2%A0%3D%C2%A0new%C2%A0ListNode(cur)%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res%C2%A0%3D%C2%A0res.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0l1%C2%A0%3D%C2%A0l1.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0l2%C2%A0%3D%C2%A0l2.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0while(l1%C2%A0!%3D%C2%A0null)%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0int%C2%A0cur%C2%A0%3D%C2%A0l1.val%C2%A0%2B%C2%A0pre%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0if(cur%C2%A0%3E%C2%A09)%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0pre%C2%A0%3D%C2%A0cur%C2%A0%2F%C2%A010%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0cur%C2%A0%3D%C2%A0cur%C2%A0%25%C2%A010%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7Delse%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0pre%C2%A0%3D%C2%A00%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res.next%C2%A0%3D%C2%A0new%C2%A0ListNode(cur)%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res%C2%A0%3D%C2%A0res.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0l1%C2%A0%3D%C2%A0l1.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0while(l2%C2%A0!%3D%C2%A0null)%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0int%C2%A0cur%C2%A0%3D%C2%A0l2.val%C2%A0%2B%C2%A0pre%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0if(cur%C2%A0%3E%C2%A09)%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0pre%C2%A0%3D%C2%A0cur%C2%A0%2F%C2%A010%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0cur%C2%A0%3D%C2%A0cur%C2%A0%25%C2%A010%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7Delse%C2%A0%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0pre%C2%A0%3D%C2%A00%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res.next%C2%A0%3D%C2%A0new%C2%A0ListNode(cur)%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res%C2%A0%3D%C2%A0res.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0l2%C2%A0%3D%C2%A0l2.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0if(pre%C2%A0!%3D%C2%A00)%7B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0res.next%C2%A0%3D%C2%A0new%C2%A0ListNode(pre)%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0return%C2%A0head.next%3B%0A%C2%A0%C2%A0%C2%A0%C2%A0%7D%0A%7D%0A%0A%60%60%60</center></span>
</div></body></html> 
posted @ 2020-02-05 10:19  tumint  阅读(75)  评论(0)    收藏  举报