欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 18:26:06
...

【LintCode-167】链表求和(Java实现)
第一次代码记录:

      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与新增链表节点(因为返回值链表的长度>=任何一条参数链表)来实现。
第二次代码:返回自己创建的链表,没有依附在任何一条参数链表上。

如果您有更好的解法,欢迎您在留言区补充,感谢!!