LeetCode 462. Minimum Moves to Equal Array Elements II in F#

URL

leetcode.com/problems/minimum-moves-to-equa..

Code

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

open System

let minMoves2 (nums: int list) : int =
    let rec minMoves2' (nums: int64 list) (origs: int64 list) (ret: int64) =
        match nums with
        | [] -> ret |> int
        | h :: t ->
            let sum =
                origs
                |> List.fold (fun acc n -> acc + (Math.Abs(n - h))) 0L

            minMoves2' t origs (Math.Min(ret, sum))

    let nums' = nums |> List.map int64
    minMoves2' nums' nums' Int64.MaxValue