Skip to content

Instantly share code, notes, and snippets.

@defp
Created September 1, 2021 03:03
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 defp/79a643331ebf6772cb8587fe7463b108 to your computer and use it in GitHub Desktop.
Save defp/79a643331ebf6772cb8587fe7463b108 to your computer and use it in GitHub Desktop.
elixir: merge two sorted list
defmodule MergeSoredList do
def merge(l1, []), do: l1
def merge([], l2), do: l2
def merge(l1, l2), do: merge(l1, l2, [])
def merge([], l2, acc), do: acc ++ l2
def merge(l1, [], acc), do: acc ++ l1
def merge([head1| tail1], [head2 | _] = l2, acc) when head1 <= head2 do
merge(tail1, l2, acc ++ [head1])
end
def merge([head1| _] = l1, [head2 | tail2], acc) when head2 < head1 do
merge(l1, tail2, acc ++ [head2])
end
end
r = MergeSoredList.merge([1, 3, 5, 7, 10], [2, 4, 6, 8])
IO.puts inspect(r)
# [1, 2, 3, 4, 5, 6, 7, 8, 10]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment