两数相加 II(golang)

原题:两数相加 II

使用栈,其它与两数相加(golang)类似

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    // 使用栈,使用头插法返回链表
    ret := new(ListNode)
    s1 := []int{}
    s2 := []int{}
    for l1 != nil || l2 != nil {
        if l1 != nil {
            s1 = append(s1, l1.Val)
            l1 = l1.Next
        }
        if l2 != nil {
            s2 = append(s2, l2.Val)
            l2 = l2.Next
        }
    }
    i1, i2 := len(s1),len(s2)
    sum := 0
    for i1> 0 || i2 > 0 || sum > 0{
        n := new(ListNode)
        if i1 > 0 {
            i1 --
            sum += s1[i1]
        }
        if i2 > 0 {
            i2 --
            sum += s2[i2]
        }
        n.Val = sum % 10
        sum /= 10
        n.Next = ret.Next
        ret.Next = n
    }
    return ret.Next
}

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