本篇文章为大家展示了golang中怎么利用leetcode 实现链表求和,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和,并用链表形式返回结果。
示例:
输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912
进阶:假设这些数位是正向存放的,请再做一遍。
示例:
输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
输出:9 -> 1 -> 2,即912
解题思路
1,这个题目需要注意一个细节,进位标记
2,有与个位在前,所以比较简单
3,需要注意,两个链表的长短不一致
4,对于1+9999情况需要特殊处理
代码实现
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { if l1==nil{ return l2 } if l2==nil{ return l1 } r:=new(ListNode) tr:=r t1:=l1 t2:=l2 flag:=0 tr.Val=(t1.Val+t2.Val+flag)%10 flag=(t1.Val+t2.Val+flag)/10 for t1.Next!=nil && t2.Next!=nil{ tr.Next=new(ListNode) tr=tr.Next t1=t1.Next t2=t2.Next tr.Val=(t1.Val+t2.Val+flag)%10 flag=(t1.Val+t2.Val+flag)/10 } for t1.Next!=nil{ tr.Next=new(ListNode) tr=tr.Next t1=t1.Next tr.Val=(t1.Val+flag)%10 flag=(t1.Val+flag)/10 } for t2.Next!=nil{ tr.Next=new(ListNode) tr=tr.Next t2=t2.Next tr.Val=(t2.Val+flag)%10 flag=(t2.Val+flag)/10 } if flag!=0{ tr.Next=new(ListNode) tr=tr.Next tr.Val=flag }return r}
上述内容就是golang中怎么利用leetcode 实现链表求和,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4586289/blog/4404186