LeetCode 406. Queue Reconstruction by Height in F#

URL

leetcode.com/problems/queue-reconstruction-..

Code

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

let reconstructQueue (people: (int * int) list) : (int * int) list =
    let insert pos person queue =
        if pos = 0 then
            person :: queue
        else
            (List.take pos queue)
            @ (person :: (List.skip pos queue))


    let people' =
        people
        |> List.sortWith (fun (h1, t1) (h2, t2) ->
            if h1 = h2 then
                compare t1 t2
            else
                compare h2 h1)

    people'
    |> List.fold
        (fun acc person ->
            let (_, tallers) = person
            insert tallers person acc)
        []