本质上是单链表从低位到高位存储了数字,类比竖式,大于10则在Next上进位。

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    l1_copy := l1
    for{
        if(l1.Next == nil && l2.Next != nil){
           l1.Next = new (ListNode)
        }
        l1.Val += l2.Val 
        if(l2.Next == nil){
            break
        }
        l1 = l1.Next
        l2 = l2.Next
    }
    l1 = l1_copy
    for{
        if(l1.Val >= 10){
            l1.Val = l1.Val - 10
            if(l1.Next == nil){
                l1.Next = new (ListNode)
            }
            l1.Next.Val = l1.Next.Val + 1
        }
        if(l1.Next == nil){
            break
        }
        l1 = l1.Next
        
    }
    return l1_copy
}