本质上是单链表从低位到高位存储了数字,类比竖式,大于10则在Next上进位。
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
l1_copy := l1
for{
if(l1.Next == nil && l2.Next != nil){
l1.Next = new (ListNode)
}
l1.Val += l2.Val
if(l2.Next == nil){
break
}
l1 = l1.Next
l2 = l2.Next
}
l1 = l1_copy
for{
if(l1.Val >= 10){
l1.Val = l1.Val - 10
if(l1.Next == nil){
l1.Next = new (ListNode)
}
l1.Next.Val = l1.Next.Val + 1
}
if(l1.Next == nil){
break
}
l1 = l1.Next
}
return l1_copy
}