LeetCode 2. 两数相加(Golang)

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头。

示例

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    head := &ListNode{}
    p,q := l1,l2
    curr := head
    carry := 0
    for p!=nil || q!=nil{
        x := 0
        if p != nil {
            x = p.Val
        }
        y := 0
        if q != nil {
            y = q.Val
        }
        sum := carry + x + y
        carry = sum / 10
        curr.Next = &ListNode{Val:sum % 10}
        curr = curr.Next
        if p !=nil{
            p = p.Next
        }
        if q != nil {
            q = q.Next
        }
    }
    if carry > 0 {
        curr.Next = &ListNode{Val:carry}
    }
    return head.Next
}

猜你喜欢

转载自blog.csdn.net/luckydog612/article/details/83020078