两数相加(golang)

原题: 两数相加

关联:两数相加 II(golang)
从低位加起,注意进位,且最后进位完的链表可能比l1,l2中最长的更长。

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {

    // h表示进位,为低位相加/10的值取整
    retHead := new(ListNode)
    p := retHead
    h := 0
    for l1 != nil || l2 != nil || h > 0{
        if l1 != nil {
            h += l1.Val
            l1 = l1.Next
        }
        if l2 != nil {
            h += l2.Val
            l2 = l2.Next
        }
        // 和为h的余数
        p.Next = new(ListNode)
        p = p.Next
        p.Val = h%10
        h /= 10
    }
    return retHead.Next
}

你可能感兴趣的:(两数相加(golang))