1 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 2 ListNode fake = new ListNode(0); 3 ListNode p = fake; 4 5 ListNode p1 = l1; 6 ListNode p2 = l2; 7 8 int carry = 0; 9 while(p1!=null || p2!=null){ 10 int sum = carry; 11 if(p1!=null){ 12 sum += p1.val; 13 p1 = p1.next; 14 } 15 16 if(p2!=null){ 17 sum += p2.val; 18 p2 = p2.next; 19 } 20 21 if(sum>9){ 22 carry=1; 23 sum = sum-10; 24 }else{ 25 carry = 0; 26 } 27 28 ListNode l = new ListNode(sum); 29 p.next = l; 30 p = p.next; 31 } 32 33 //don't forget check the carry value at the end 34 if(carry > 0){ 35 ListNode l = new ListNode(carry); 36 p.next = l; 37 } 38 return fake.next;
package sort; public class AddTwoNumbers { public static ListNode addTwoNumbersFun(ListNode l1,ListNode l2) { ListNode result=new ListNode(); ListNode resultOne=new ListNode(); result.next=resultOne; int num1,num2; int forwordNum=0; while(l1.next!=null||l2.next!=null) { if(l1.next==null) num1=0; else num1=l1.val; if(l2.next==null) num2=0; else num2=l2.val; int addNum = num1+num2+forwordNum; resultOne.val=addNum%10; resultOne=resultOne.next; forwordNum=addNum/10; if(l1.next!=null) { l1=l1.next; } if(l2.next!=null) { l2=l2.next; } } return result.next; } public static void main(String[] args) { ListNode node1=new ListNode(2); ListNode node2=new ListNode(4); ListNode node3=new ListNode(3); node1.next=node2; node2.next=node3; ListNode node4=new ListNode(5); ListNode node5=new ListNode(6); ListNode node6=new ListNode(4); node4.next=node5; node5.next=node6; ListNode result = addTwoNumbersFun(node1,node4); while(result.next!=null) { System.out.println(result.val); result=result.next; } } }