2.两数相加

1.类似于双指针

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    if l1==nil{
        return l2
    }
    if l2==nil{
        return l1
    }
    ans:=&ListNode{Val:0}   //用于作为返回结果 
    p:=ans  //用于作为后续索引指针
    add:=0
    for l1!=nil && l2!=nil{
        tmp:=l1.Val+l2.Val+add
        p.Next=&ListNode{Val:tmp%10}
        add=tmp/10
        p=p.Next
        l1=l1.Next
        l2=l2.Next
    }

    for l1!=nil{
        tmp:=l1.Val+add
        p.Next=&ListNode{Val:tmp%10}
        add=tmp/10
        p=p.Next
        l1=l1.Next
    }

    for l2!=nil{
        tmp:=l2.Val+add
        p.Next=&ListNode{Val:tmp%10}
        add=tmp/10
        p=p.Next
        l2=l2.Next
    }

    if add!=0{  //最后需要判断这个进位是否还存在
        p.Next=&ListNode{Val:add}
        return ans.Next
    }
    return ans.Next
}
posted @ 2022-04-27 16:55  wustjq  阅读(26)  评论(0)    收藏  举报