LeetCode 746. Min Cost Climbing Stairs in F#

URL

leetcode.com/problems/min-cost-climbing-sta..

Code

github.com/syohex/dotnet-study/blob/master/..

let minCostClimbingStairs (cost: int list) : int =
    let rec minCostClimbingStairs' cost (prev2: int) prev1 =
        match cost with
        | [] -> System.Math.Min(prev2, prev1)
        | h :: t ->
            let val2 = h + prev2
            let val1 = h + prev1

            minCostClimbingStairs' t prev1 (System.Math.Min(val2, val1))

    match cost with
    | prev2 :: prev1 :: rest -> minCostClimbingStairs' rest prev2 prev1
    | _ -> failwith "never reach here"