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
}

文章作者: Jack Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Li !
评论
  目录