// 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