两数相加

23 阅读1分钟

两个链表相加的思想,考虑进位即可

type ListNode struct {  
    Val int  
    Next *ListNode  
}
//两数相加
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    l := &ListNode{}
    p1, p2, p := l1, l2, l
    var head int
    for p1 != nil || p2 != nil || head != 0 {
        val := head
        if p1 != nil {
            val += p1.Val
            p1 = p1.Next
        }
        if p2 != nil {
            val += p2.Val
            p2 = p2.Next
        }
        //此处对val做处理
        head, val = val/10, val%10
        l.Next = &ListNode{
            Val: val,
        }
        l = l.Next
    }
    //注意跳过虚拟头节点
    return p.Next
}