Add Two Numbers

add two linkedlist.

example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.

and the solutions will be like follows:

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if (l1 == null && l2 == null) return null;
        if (l1 == null) return l2;
        if (l2 == null) return l1;
        
        ListNode p1 = l1;
        ListNode p2 = l2;
        ListNode res = new ListNode(0);
        ListNode p = res;
        int ten = 0;
        
        while (p1 != null && p2 != null) {
            
            int sum = p1.val + p2.val;
            sum = (sum + ten);//add the last time 
            p.next = new ListNode(sum % 10); //and we only add sum%10 on current postion
            p = p.next;
            
            ten = sum / 10; //and we get the thing for next loop
            if (p1.next != null && p2.next != null) {
                p1 = p1.next;
                p2 = p2.next;
            } else if (p1.next != null) {
                p1 = p1.next;
                p2 = new ListNode(0);
            } else if (p2.next != null) {
                p1 = new ListNode(0);
                p2 = p2.next;
            } else {
                p1 = p1.next;
                p2 = p2.next;
                //will automatically end while loop next time.
            }
            
        }
        if (ten != 0) {
            p.next = new ListNode(ten);
        }
        
        return res.next;
    }
}
posted @ 2020-09-13 23:29  EvanMeetTheWorld  阅读(10)  评论(0)    收藏  举报