/**
* 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) {
List<Integer> list = new ArrayList<>();
ListNode next1 = l1;
ListNode next2 = l2;
int carry = 0;
while (next1 != null || next2 != null) {
int v1 = next1 != null ? next1.val : 0;
int v2 = next2 != null ? next2.val : 0;
int sum = v1 + v2 + carry;
list.add(sum % 10);
carry = sum / 10;
next1 = next1 != null ? next1.next : null;
next2 = next2 != null ? next2.next : null;
}
if (carry > 0) {
list.add(carry);
}
return buildListNode(list.toArray(new Integer[] { list.size() }));
}
public ListNode buildListNode(Integer[] is) {
if (is.length == 0) {
return null;
}
ListNode node = new ListNode(is[0]);
ListNode tmp = node;
for (int i = 1; i < is.length; i++) {
tmp.next = new ListNode(is[i]);
tmp = tmp.next;
}
return node;
}
}