/* * 2.Add Two Numbers * 2016-4-8 by Mingyang * 这道题目首先做的时候用了很多情况,比如ab都不为空,ab都为空,只有a为空,只有b为空。后面改为只有一种 * 情况:只要a或b为不为空,就把a或者b的数加起来,然后再做相应的运算。 * 第二个点是在p3.next=new ListNode(carry%10); * 这里是把下一个点的值赋予当前的计算结果。而我是把当前的node给当前的结果,那么 * 下一个Node就不知道如何初始化了 */ public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int carry=0; ListNode pre=new ListNode(-1); ListNode p1=l1,p2=l2,p3=pre; while(l1!=null||l2!=null){ if(l1!=null){ carry=carry+l1.val; l1=l1.next; } if(l2!=null){ carry+=l2.val; l2=l2.next; } p3.next=new ListNode(carry%10); p3=p3.next; carry=carry/10; } if(carry!=0){ p3.next=new ListNode(carry); } return pre.next; }