【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与新增链表节点(因为返回值链表的长度>=任何一条参数链表)来实现。
第二次代码:返回自己创建的链表,没有依附在任何一条参数链表上。
如果您有更好的解法,欢迎您在留言区补充,感谢!!
相关文章推荐
- 【LintCode-452】删除链表中的元素(Java实现)
- 一元多项式求和(Java链表实现)
- LintCode_167_链表求和
- 【LintCode-408】二进制求和(Java实现)
- Java实现-链表求和2
- LintCode_167_链表求和
- lintcode,167,链表求和
- lintcode-167-链表求和
- [Lintcode] #167 链表求和
- python_lintcode_167链表求和
- 利用链表实现队列的Java代码
- 某一天的思考题(使用Java实现链表)的参考答案
- Java实现链表之结点
- 利用链表实现队列的Java代码
- java实现链表的例子!!
- java链表实现约瑟夫算法
- Java数据结构之双端链表原理与实现方法
- java双向链表的实现(部分功能)
- Java实现泛型链表
- Java语言中链表和双向链表的实现