diff --git a/pkg/merge_two_sorted_lists/main.go b/pkg/merge_two_sorted_lists/main.go new file mode 100644 index 0000000..cf294ef --- /dev/null +++ b/pkg/merge_two_sorted_lists/main.go @@ -0,0 +1,33 @@ +package merge_two_sorted_lists + +type ListNode struct { + Val int + Next *ListNode +} + +func MergeTwoLists(a *ListNode, b *ListNode) *ListNode { + result := &ListNode{} + head := result + + for { + if a == nil { + if b == nil { + break + } else { + head.Next, head, b = b, b, b.Next + } + } else { + if b == nil { + head.Next, head, a = a, a, a.Next + } else { + if a.Val < b.Val { + head.Next, head, a = a, a, a.Next + } else { + head.Next, head, b = b, b, b.Next + } + } + } + } + + return result.Next +}