LeetCode 1046. Last Stone Weight in F#

URL

Last Stone Weight - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202304/last_stone_weight/main.fsx

let lastStoneWeight (stones: int list) : int =
    let rec lastStoneWeight' stones =
        match stones with
        | [] -> 0
        | h :: [] -> h
        | h1 :: h2 :: t ->
            if h1 = h2 then
                lastStoneWeight' t
            else
                let stones' = ((h1 - h2) :: t) |> List.sort |> List.rev
                lastStoneWeight' stones'

    lastStoneWeight' (stones |> List.sort |> List.rev)