Skip to content

Commit 78063a5

Browse files
committed
Improved elixir
1 parent b67984d commit 78063a5

File tree

1 file changed

+16
-15
lines changed
  • src/main/elixir/g0001_0100/s0064_minimum_path_sum

1 file changed

+16
-15
lines changed

src/main/elixir/g0001_0100/s0064_minimum_path_sum/readme.md

+16-15
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,21 @@ Given a `m x n` `grid` filled with non-negative numbers, find a path from top le
3636

3737
```elixir
3838
defmodule Solution do
39-
@spec min_path_sum(grid :: [[integer]]) :: integer
40-
def min_path_sum(grid) do
41-
traverse(grid, [0 | List.duplicate(20000, 199)])
42-
end
43-
44-
defp traverse([], prev_row), do: Enum.at(prev_row, -1)
45-
defp traverse([[first | row] | rows], [prev_row_head | prev_row]) do
46-
prev_row = traverse_row(row, prev_row, [first + prev_row_head])
47-
traverse(rows, prev_row)
48-
end
49-
50-
defp traverse_row([], _prev_row, acc), do: Enum.reverse(acc)
51-
defp traverse_row([head | tail], [top | prev_row], [prev | _rest] = acc) do
52-
traverse_row(tail, prev_row, [head + min(prev, top) | acc])
53-
end
39+
@spec min_path_sum(grid :: [[integer]]) :: integer
40+
def min_path_sum(grid) do
41+
grid_width = length(hd(grid)) # Determine the number of columns in the grid
42+
traverse(grid, [0 | List.duplicate(:infinity, grid_width - 1)])
43+
end
44+
45+
defp traverse([], prev_row), do: Enum.at(prev_row, -1)
46+
defp traverse([[first | row] | rows], [prev_row_head | prev_row]) do
47+
prev_row = traverse_row(row, prev_row, [first + prev_row_head])
48+
traverse(rows, prev_row)
49+
end
50+
51+
defp traverse_row([], _prev_row, acc), do: Enum.reverse(acc)
52+
defp traverse_row([head | tail], [top | prev_row], [prev | _rest] = acc) do
53+
traverse_row(tail, prev_row, [head + min(prev, top) | acc])
54+
end
5455
end
5556
```

0 commit comments

Comments
 (0)