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
20180223
1 class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 ListNode fakehead = new ListNode(0); 4 ListNode prev = fakehead; 5 int carry = 0; 6 for(ListNode p1=l1, p2 = l2; 7 p1!=null || p2!=null; 8 p1=(p1==null?null:p1.next),p2=(p2==null?null:p2.next) 9 ){ 10 int p1val = p1==null?0:p1.val; 11 int p2val = p2==null?0:p2.val; 12 int val = p1val+p2val+carry; 13 carry = val/10; 14 val = val%10; 15 ListNode temp = new ListNode(val); 16 prev.next = temp; 17 prev = prev.next; 18 } 19 if(carry>0) 20 prev.next = new ListNode(carry); 21 return fakehead.next; 22 } 23 }
1 class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 // ListNode cur =new ListNode(0); 4 ListNode prev= new ListNode(0); 5 ListNode head = prev; 6 int pval; 7 int jinwei=0; 8 while(l1!=null ||l2!=null || jinwei!= 0 ){ 9 pval = ((l2 == null) ? 0 : l2.val) + ((l1 == null) ? 0 : l1.val) + jinwei; 10 if(pval>9) { jinwei =1;pval=pval-10; } 11 else jinwei=0; 12 ListNode cur = new ListNode(pval); 13 prev.next =cur; 14 prev = cur; 15 l1 = (l1 == null) ? l1 : l1.next; 16 l2 = (l2 == null) ? l2 : l2.next; 17 18 } 19 return head.next; 20 21 } 22 23 }