描述
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
思路
1. 取模和取余的时候 记得 把前面的进位也加上
2. 声明一个变量用来记录新链表的尾部
实现
func AddTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
cur1 := l1
cur2 := l2
preFlag := 0
var head *ListNode
var cur *ListNode
for cur1 != nil || cur2 != nil{
num1 := 0
num2 := 0
if cur1 != nil{
num1 = cur1.Val
cur1 = cur1.Next
}
if cur2 != nil{
num2 = cur2.Val
cur2 = cur2.Next
}
newNode := new(ListNode)
newNode.Val = (num1+ num2+ preFlag)%10
if head == nil{
head = newNode
cur = head
}else{
cur.Next = newNode
cur = cur.Next
}
preFlag = (num1+ num2+ preFlag)/10
}
return head
}