Skip to content

Instantly share code, notes, and snippets.

@slaykovsky
Last active March 22, 2018 21:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slaykovsky/e94d245c3b0e74b368151f7a4f368c02 to your computer and use it in GitHub Desktop.
Save slaykovsky/e94d245c3b0e74b368151f7a4f368c02 to your computer and use it in GitHub Desktop.
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
if l1 == nil && l2 == nil {
return nil
}
carry := 0
var result *ListNode
i := 0
j := 0
if l1 != nil {
i = l1.Val
}
if l2 != nil {
j = l2.Val
}
sum := i + j + carry
if sum > 9 {
carry = 1
} else {
carry = 0
}
sum %= 10
var l1Next *ListNode
var l2Next *ListNode
if l1 != nil {
l1Next = l1.Next
}
if l2 != nil {
l2Next = l2.Next
}
if l1 != nil && l1.Next != nil {
l1.Next.Val += carry
carry = 0
} else if l2 != nil && l2.Next != nil {
l2.Next.Val += carry
carry = 0
}
result = &ListNode{
sum, addTwoNumbers(l1Next, l2Next),
}
if carry != 0 {
result.Next = &ListNode{carry, nil}
}
return result
}
func main() {
l1 := &ListNode{
2, &ListNode{
4, &ListNode{
3, nil,
},
},
}
l2 := &ListNode{
5, &ListNode{
6, &ListNode{
4, nil,
},
},
}
nodes := addTwoNumbers(l1, l2)
for nodes != nil {
fmt.Println(nodes.Val)
nodes = nodes.Next
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment