You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
result := new(ListNode)
insert := result
index := false
first := true
for l1 != nil && l2 != nil {
tep := l1.Val + l2.Val
if index {
tep += 1
}
if tep >= 10 {
tep = tep %10
index = true
} else {
index = false
}
if first{
first = false
} else {
insert.Next = new(ListNode)
insert = insert.Next
}
insert.Val = tep
l1 = l1.Next
l2 = l2.Next
}
for l1 != nil {
tep := l1.Val
if index {
tep += 1
}
if tep >= 10 {
tep = tep %10
index = true
} else {
index = false
}
if first{
first = false
} else {
insert.Next = new(ListNode)
insert = insert.Next
}
insert.Val = tep
l1 = l1.Next
}
for l2 != nil {
tep := l2.Val
if index {
tep += 1
}
if tep >= 10 {
tep = tep %10
index = true
} else {
index = false
}
if first{
first = false
} else {
insert.Next = new(ListNode)
insert = insert.Next
}
insert.Val = tep
l2 = l2.Next
}
if index{
insert.Next = new(ListNode)
insert = insert.Next
insert.Val = 1
}
return result
}