lc-go/solutions/4/q445/solution.go

46 lines
804 B
Go

// Package q445 implements a solution for https://leetcode.com/problems/add-two-numbers-ii/
package q445
type ListNode struct {
Val int
Next *ListNode
}
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
var a1, a2 []*ListNode
for l1 != nil {
a1 = append(a1, l1)
l1 = l1.Next
}
for l2 != nil {
a2 = append(a2, l2)
l2 = l2.Next
}
ret := make([]ListNode, max(len(a1), len(a2))+1)
for i := range ret {
if i < len(a1) {
ret[i].Val += a1[len(a1)-1-i].Val
}
if i < len(a2) {
ret[i].Val += a2[len(a2)-1-i].Val
}
if ret[i].Val > 9 {
ret[i+1].Val += ret[i].Val / 10
ret[i].Val %= 10
}
if i > 0 {
ret[i].Next = &ret[i-1]
}
}
for i := len(ret) - 1; i >= 0; i-- {
if ret[i].Val > 0 {
return &ret[i]
}
}
return &ret[0]
}
var _ = addTwoNumbers