Solved squares of a sorted array problem with Erlang :array
module and a two pointer solution but not sure its a functional thing to do.
Thanks!
@spec sorted_squares(nums :: [integer]) :: [integer]
def sorted_squares(nums) do
arr = :array.from_list(nums)
aux(arr, [], 0, :array.size(arr) - 1)
end
defp aux(_, accum, left, right) when left > right, do: accum
defp aux(arr, accum, left, right) do
left_num = :array.get(left, arr) |> Integer.pow(2)
right_num = :array.get(right, arr) |> Integer.pow(2)
case left_num > right_num do
true -> aux(arr, [left_num | accum], left + 1, right)
false -> aux(arr, [right_num | accum], left, right - 1)
end
end