LeetCode 2095. Delete the Middle Node of a Linked List in F#

URL

leetcode.com/problems/delete-the-middle-nod..

Code

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

type MyList =
    | Leaf
    | Node of int * MyList

let deleteMiddle (head: MyList) : MyList =
    let rec deleteMiddle' node i =
        match node with
        | Leaf -> i, Leaf
        | Node (v, next) ->
            let len, lst = deleteMiddle' next (i + 1)

            if i = (len / 2) then
                len, next
            else
                len, Node(v, lst)

    deleteMiddle' head 0 |> snd