package top100liked import ( "fmt" "testing" ) // https://leetcode.cn/problems/add-two-numbers/description/?envType=study-plan-v2&envId=top-100-liked type ListNode struct { Val int Next *ListNode } func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { dummy := &ListNode{} p := dummy carry := 0 for l1 != nil || l2 != nil || carry > 0 { sum := carry if l1 != nil { sum += l1.Val l1 = l1.Next } if l2 != nil { sum += l2.Val l2 = l2.Next } p.Next = &ListNode{Val: sum % 10} p = p.Next carry = sum / 10 } return dummy.Next } func Test(t *testing.T) { input1 := &ListNode{ Val: 2, Next: &ListNode{ Val: 4, Next: &ListNode{ Val: 3, Next: nil, }, }, } input2 := &ListNode{ Val: 5, Next: &ListNode{ Val: 6, Next: &ListNode{ Val: 4, Next: nil, }, }, } output := addTwoNumbers(input1, input2) for output != nil { fmt.Println(output.Val) output = output.Next } }