两个链表相加的思想,考虑进位即可
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
}