原题
题解:链表模拟加法,注意进位特殊处理
代码:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
var dummy ListNode
prevNode := &dummy
carry := 0
for node1, node2 := l1, l2; node1 != nil || node2 != nil; {
v1, v2 := 0, 0
if node1 != nil {
v1 = node1.Val
node1 = node1.Next
}
if node2 != nil {
v2 = node2.Val
node2 = node2.Next
}
sum := v1 + v2 + carry
v := sum % 10
carry = sum / 10
prevNode.Next = &ListNode {
Val: v,
}
prevNode = prevNode.Next
}
if carry != 0 {
prevNode.Next = &ListNode {
Val: carry,
}
carry = 0
}
return dummy.Next
}