9.两数相加-链表替身节点

思路:

利用指针复制,子指针去遍历操作

s表示当前两个节点相加的值,i表示是否大于10

遍历,直到L1节点==nil && L2节点==nil && i==0

如果不满足则继续三个节点=当前节点.Next

对了,别忘了兼容一个节点或者两个节点都是nil的情况

package main

type ListNode struct {
    Val int
    Next *ListNode
}

// @solution-sync:begin
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    var i,s int
    var res =&ListNode{Val:0}
    var now=res

    for true {
        if i>0{
            s=l1.Val+l2.Val+1
            i=0
        }else{
            s=l1.Val+l2.Val
        }
        if s>=10{
            now.Next=&ListNode{Val:s-10}
            i=1
        }else{
            now.Next=&ListNode{Val:s}
        }
        if l1.Next==nil && l2.Next==nil && i==0 {
            
            break
        }
        if l1.Next==nil{
            l1.Next=&ListNode{Val:0}
        }
        if l2.Next==nil{
            l2.Next=&ListNode{Val:0}
        }
        
       
        l1=l1.Next
        l2=l2.Next
        
        now=now.Next
    }
    return res.Next

}

Last updated