LeetCode 64. Minimum Path Sum in F#

URL

Minimum Path Sum - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/0064/main.fsx

open System

let minPathSum (grid: int[,]) : int =
    let rows, cols = Array2D.length1 grid, Array2D.length2 grid
    let dp = Array2D.init rows cols (fun _ _ -> Int32.MaxValue)
    dp.[0, 0] <- grid.[0, 0]

    for i in 0 .. (rows - 1) do
        for j in 0 .. (cols - 1) do
            if i <> 0 then
                dp.[i, j] <- grid.[i, j] + dp.[i - 1, j]

            if j <> 0 then
                dp.[i, j] <- Math.Min(dp.[i, j], grid.[i, j] + dp.[i, j - 1])


    dp.[rows - 1, cols - 1]