LeetCode 341. Flatten Nested List Iterator in F#

URL

leetcode.com/problems/flatten-nested-list-i..

Code

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

type NestedInteger =
    | Int of int
    | List of NestedInteger list

type NestedIterator =
    { mutable Nums: int list }

    static member init(nestedList: NestedInteger list) : NestedIterator =
        let rec flatten nestedList acc =
            match nestedList with
            | [] -> acc |> List.rev
            | h :: t ->
                match h with
                | Int (n) -> flatten t (n :: acc)
                | List (v) ->
                    let lst = flatten v []
                    let acc' = (lst |> List.rev) @ acc
                    flatten t acc'

        let nums = flatten nestedList []
        { Nums = nums }

    member this.next() : int =
        let ret = List.head this.Nums
        this.Nums <- List.tail this.Nums
        ret

    member this.hasNext() : bool = List.isEmpty this.Nums |> not