Skip to content

Instantly share code, notes, and snippets.

@TonyWuLihu
Created July 10, 2020 09:05
Show Gist options
  • Save TonyWuLihu/8ff840386b96aa89057a2b1f01cf081c to your computer and use it in GitHub Desktop.
Save TonyWuLihu/8ff840386b96aa89057a2b1f01cf081c to your computer and use it in GitHub Desktop.
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
var l3 *ListNode
fir_link := l1
sec_link := l2
for fir_link != nil || sec_link != nil{
curNode := l3
insert_node := &ListNode{0,nil}
//isExceed := false
for curNode != nil && curNode.Next != nil{
curNode = curNode.Next
}
if fir_link != nil && sec_link != nil {
if (fir_link.Val + sec_link.Val) >= 10{
//isExceed = true
insert_node.Val = (fir_link.Val + sec_link.Val)%10
//if curNode != nil {
// insert_node.Val = insert_node.Val + curNode.Val
//}
if fir_link.Next != nil {
fir_link.Next.Val = fir_link.Next.Val + 1
}else{
exceedNode := &ListNode{0,nil}
exceedNode.Val = exceedNode.Val +1
fir_link.Next = exceedNode
}
}else{
if curNode != nil {
insert_node.Val = (fir_link.Val + sec_link.Val)%10
} else{
insert_node.Val = (fir_link.Val + sec_link.Val)%10
}
}
if curNode != nil {
curNode.Next = insert_node
//if isExceed{
// exceedNode = &ListNode{0,nil}
// exceedNode.Val = exceedNode.Val +1
// curNode.Next.Val = curNode.Next.Val + 1
//}
} else{
l3 = insert_node
}
} else if sec_link == nil{
insert_node.Val = fir_link.Val % 10
if fir_link.Val >= 10{
if fir_link.Next != nil {
fir_link.Next.Val = fir_link.Next.Val + 1
}else{
exceedNode := &ListNode{0,nil}
exceedNode.Val = exceedNode.Val +1
insert_node.Next = exceedNode
}
}
curNode.Next = insert_node
} else if fir_link == nil {
insert_node.Val = sec_link.Val%10
if sec_link.Val >=10{
exceedNode := &ListNode{0,nil}
exceedNode.Val = exceedNode.Val +1
insert_node.Next = exceedNode
curNode.Next = insert_node
}else{
curNode.Next = insert_node
}
}
if fir_link != nil {
fir_link = fir_link.Next
}
if sec_link != nil {
sec_link = sec_link.Next
}
// fir_link,sec_link = fir_link.Next,sec_link.Next
}
return l3
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment