LeetCode 950. Reveal Cards In Increasing Order in F#
URL
Reveal Cards In Increasing Order - LeetCode
Code
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