两数相加 - 原地相加
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
head := l1
prev := l1
carry := 0
for l1 != nil && l2 != nil {
l1.Val += l2.Val + carry
if l1.Val >= 10 {
l1.Val -= 10
carry = 1
} else {
carry = 0
}
prev = l1
l1 = l1.Next
l2 = l2.Next
}
if l2 != nil {
prev.Next = l2
l1 = l2
}
for l1 != nil {
l1.Val += carry
if l1.Val >= 10 {
l1.Val -= 10
carry = 1
} else {
carry = 0
break
}
prev = l1
l1 = l1.Next
}
if carry != 0 {
prev.Next = &ListNode{ Val: carry }
}
return head
}