LeetCode 876. Middle of the Linked List in F#
URL
leetcode.com/problems/middle-of-the-linked-..
Code
github.com/syohex/dotnet-study/blob/master/..
type List =
| Leaf
| Node of int * List
let middleNode (head: List) : List =
let rec middleNode' node n =
match node with
| Leaf -> None, n
| Node(_, next) ->
let node', len = middleNode' next (n + 1)
match node' with
| Some(_) -> node', len
| None -> if n = len / 2 then Some(node), len else None, len
middleNode' head 0 |> fst |> Option.get