"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 contains a single digit. Add the two numbers and return the sum as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself."
/**
* 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; }
* }
*/```
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode();
ListNode target = result;
int carry = 0;
while(l1 != null || l2 !=null) {
int val1 = 0;
int val2 = 0;
if(l1 != null) {val1 = l1.val;}
if(l2 != null) {val2 = l2.val;}
int sum = (val1 + val2 + carry);
target.val = sum%10;
if(sum>=10) {
carry = 1;
}else {carry =0;}
if(l1 != null ) {
l1 = l1.next;
}
if(l2 != null) {
l2 = l2.next;
}
if(l1 !=null || l2 != null ) {
target.next = new ListNode();
target = target.next;
}
}
if (carry == 1) {
target.next = new ListNode(1);
}
return result;
}
public static ListNode addTwoNumbers01(ListNode l1 , ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode curr = dummyHead;
int carry =0;
while(l1 !=null || l2 !=null || carry !=0) {
int val1 = (l1 != null) ? l1.val :0;
int val2 = (l2 !=null) ? l2.val:0;
int sum = carry + val1 + val2;
carry = sum/10;
curr.next = new ListNode(sum%10);
curr = curr.next;
if(l1 != null) {
l1 = l1.next;
}
if(l2 != null) {
l2 = l2.next;
}
}
return dummyHead.next;