LeetCode 950. Reveal Cards In Increasing Order in F#

URL

Reveal Cards In Increasing Order - LeetCode

Code

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

let deckRevealedIncreasing (deck: int list) : int[] =
    let rec deckRevealedIncreasing' deck q (ret: int[]) =
        match deck with
        | [] -> ret
        | h :: t ->
            match q with
            | [] -> failwith "never reach here"
            | i :: q' ->
                ret.[i] <- h

                match q' with
                | [] -> deckRevealedIncreasing' t [] ret
                | j :: q'' -> deckRevealedIncreasing' t (q'' @ [ j ]) ret

    let len = List.length deck
    let ret = Array.zeroCreate len
    let q = [ 0 .. (len - 1) ]
    deckRevealedIncreasing' (List.sort deck) q ret