public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int sum=0,append=0,left=0;
ListNode root=new ListNode(0);
ListNode result=root;
while(l1!=null || l2!=null){
int v1=l1!=null?l1.val:0;
int v2=l2!=null?l2.val:0;
sum=v1+v2+append;
append=sum/10;
left =sum%10;
ListNode cursor=new ListNode(left);
result.next=cursor;
result=cursor;
if(l1!=null)
l1=l1.next;
if(l2!=null)
l2=l2.next;
}
if(append>0){
ListNode cursor=new ListNode(append);
result.next=cursor;
}
return root.next;
}
}
本人有2个疑点。
1:为什么我的程序不行
2:进位哪里我有点看不懂,比如 【2,4,3】 【2,8,2】 以程序来看结果 是【4,2,5,1】 可是期望的结果是【2,2,6】。求算法大神指导。
http://blog.csdn.net/nimahai_balabala/article/details/78154730
http://www.jianshu.com/p/d39a3c865b53
跑了一下你的代码,就是期望的结果4,2,6
拷过去一点没动
谢谢大家,可能是我电脑问题。
if(append>0){
ListNode cursor=new ListNode(append);
result.next=cursor;
}
但是我还是不懂这一步,为什么可以在原来数字的基础上 + 1 而不是新建一个 值为1的子节点。
比如 【2,4,3】 【2,8,2】 以程序来看结果 是【4,2,5,1】