# LeetCode 2. Add Two Numbers(Java)

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

1.对两个链接进行遍历，直到一个到尾为止，中间生成新节点对为两数和（记得取余数并且检查是否有进位）；
2.检查是否两个链表都已经到尾，对未到尾部的链表进行遍历，直到尾部为止，中间生成新节点（每次循环记得检查进位）。
3.返回生成的链表头即可。

``/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        int carry = 0;//1代表进位，0代表无进位        int v = 0;//中间变量，存储当前节点的值        ListNode l = new ListNode(0);        ListNode head = l;        while(l1 != null && l2 != null){            if(l1.val + l2.val + carry > 9){                v = (l1.val + l2.val + carry) % 10;                carry = 1;            }else{                v = l1.val + l2.val + carry;                carry = 0;            }            ListNode node = new ListNode(v);            l.next = node;            l = l.next;            l1 = l1.next;            l2 = l2.next;        }        while(l1 != null){            if(carry == 1){                v = l1.val + 1;                if(v > 9){                    v %= 10;                    carry = 1;                }else{                    carry = 0;                   }            }else{                v = l1.val;            }            ListNode node = new ListNode(v);            l.next = node;            l = l.next;            l1 = l1.next;        }        while(l2 != null){            if(carry == 1){                v = l2.val + 1;                if(v > 9){                    v %= 10;                    carry = 1;                }else{                    carry = 0;                   }            }else{                v = l2.val;            }            ListNode node = new ListNode(v);            l.next = node;            l = l.next;            l2 = l2.next;        }        if(carry == 1 ){            ListNode node = new ListNode(1);            l.next = node;        }        return head.next;    }}``
0 0