public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode res = new ListNode(); ListNode cur = res; int sum = 0; int carry = 0; while(l1!=null&&l2!=null){ sum = l1.val+l2.val+carry; if(sum>=10){ cur.val = sum%10; carry = sum/10; }else{ cur.val = sum; carry = 0; } l1 = l1.next; l2 = l2.next; if(l1!=null||l2!=null){ cur.next = new ListNode(); cur = cur.next; } } while(l1!=null){ sum = l1.val+carry; if(sum>=10){ cur.val = sum%10; carry = sum/10; }else{ cur.val = sum; carry = 0; } l1 = l1.next; if(l1!=null){ cur.next = new ListNode(); cur = cur.next; } } while(l2!=null){ sum = l2.val+carry; if(sum>=10){ cur.val = sum%10; carry = sum/10; }else{ cur.val = sum; carry = 0; } l2 = l2.next; if(l2!=null){ cur.next = new ListNode(); cur = cur.next; } } if(carry !=0){ cur.next = new ListNode(); cur = cur.next; cur.val = carry; } return res; }