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