【LintCode-167】链表求和(Java实现)
程序员文章站
2022-07-15 18:26:06
...
第一次代码记录:
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) {
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与新增链表节点(因为返回值链表的长度>=任何一条参数链表)来实现。
第二次代码:返回自己创建的链表,没有依附在任何一条参数链表上。
如果您有更好的解法,欢迎您在留言区补充,感谢!!