紧急Java练习 leetcode2. 两数相加

/**
 * 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 l3 = new ListNode();
        // 指针
        ListNode p1 = l1;
        ListNode p2 = l2;
        ListNode p3 = l3;
        
        // 进位
        int c = 0;

        while(p1!= null && p2!= null){
            int sum = p1.val + p2.val + c;
            int value = sum % 10;
            c = sum >= 10 ? 1 : 0;
            // 新建节点
            ListNode add = new ListNode(value);
            // 链接
            p3.next = add;
            // 更新指针
            p3 = p3.next;
            p1 = p1.next;
            p2 = p2.next;
        }

        while(p1!= null){
            int sum = p1.val + c;
            int value = sum % 10;
            c = sum >= 10 ? 1 : 0;
            ListNode add = new ListNode(value);
            p3.next = add;
            p3 = p3.next;
            p1 = p1.next;
        }

        while(p2!= null){
            int sum = p2.val + c;
            int value = sum % 10;
            c = sum >= 10 ? 1 : 0;
            ListNode add = new ListNode(value);
            p3.next = add;
            p3 = p3.next;
            p2 = p2.next;
        }

        if(c>0){
            ListNode add = new ListNode(1);
            p3.next = add;
        }

        return l3.next;
    }
}

 

你可能感兴趣的:(紧急Java练习 leetcode2. 两数相加)