2. 两数相加

2. 两数相加

注意考虑特殊情况:
一长一短就不说了,肯定会最后有一个为null,然后把剩下的那一个给整上。
还有进位add还有一种特殊情况,就是到最后还是有进位的,这时要单独给该进位添加一个新的节点。

/**
 * 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) {
        ListNode p = l1, q = l2;
        ListNode head = new ListNode();
        ListNode r = head;
        int add = 0;
        while(p!=null && q!=null){
            ListNode t = new ListNode((p.val+q.val+add)%10);
            add = (p.val+q.val+add) / 10;
            r.next = t;
            r = t;
            p = p.next;
            q = q.next;
        }
        while(p!=null) {
            ListNode t = new ListNode((p.val + add) % 10);
            add = (p.val + add) / 10;
            r.next = t;
            r = t;
            p = p.next;
        }
        while(q!=null) {
            ListNode t = new ListNode((q.val + add) % 10);
            add = (q.val + add) / 10;
            r.next = t;
            r = t;
            q = q.next;
        }
        // 最后可能add还不为0,还需要再加一个1
        if(add != 0)
            r.next = new ListNode(1);
        return head.next;
    }
}

你可能感兴趣的:(力扣Hot100,java,leetcode,数据结构,链表)