您的位置:首页 > 编程语言 > Java开发

【LintCode-167】链表求和(Java实现)

2017-11-05 17:52 435 查看


第一次代码记录:

public ListNode addLists(ListNode l1, ListNode l2) {
ListNode result=l1;
ListNode temp=l1;
ListNode lastNode=null;
int sum=0;
while(l1!=null||l2!=null){
if(l1!=null){
sum+=l1.val;
l1=l1.next;
}
if(l2!=null){
sum+=l2.val;
l2=l2.next;
}
if(l2!=null&&l1==null){
temp.next=new ListNode(0);
}
if(sum>=10){
temp.val=sum%10;
if(temp.next==null){
lastNode=temp;
}
temp=temp.next;
sum=1;
}else {
temp.val=sum;
temp=temp.next;
sum=0;
}
}
if(sum==1){
lastNode.next=new ListNode(1);
}
return result;
}


第二次代码记录:

public ListNode addLists(ListNode l1, ListNode l2) {
4000
int sum=0;
ListNode tmpNodeList=new ListNode(0);
ListNode resultNodeList=tmpNodeList;
while(l1!=null||l2!=null){
if(l1!=null){
sum+=l1.val;
l1=l1.next;
}
if(l2!=null){
sum+=l2.val;
l2=l2.next;
}
if(sum>=10){
tmpNodeList.val=sum%10;
sum=1;
}else{
tmpNodeList.val=sum;
sum=0;
}
if(l1!=null||l2!=null){
tmpNodeList.next=new ListNode(0);
tmpNodeList=tmpNodeList.next;
}
}
if(sum==1){
tmpNodeList.next=new ListNode(1);
}
return resultNodeList;

}


个人解题思路:

与前几章的思路相似,只需要考虑进位问题,只是将之前的数组/字符串 换成了单链表。

第一次代码:是依附在传入的参数链表中的任意一条,将其作为返回值链表头,通过修改链表上的val与新增链表节点(因为返回值链表的长度>=任何一条参数链表)来实现。

第二次代码:返回自己创建的链表,没有依附在任何一条参数链表上。

如果您有更好的解法,欢迎您在留言区补充,感谢!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: