LeetCode 86. Partition List in F#
URL
leetcode.com/problems/partition-list
Code
github.com/syohex/dotnet-study/blob/master/..
type LinkedList =
| Leaf
| Node of int * LinkedList
static member ofList(nums: int list) : LinkedList =
match nums with
| [] -> Leaf
| h :: t -> Node(h, LinkedList.ofList t)
let partition (head: LinkedList) (x: int) : LinkedList =
let rec partition' node x lowers highers =
match node with
| Leaf ->
let nums =
(lowers |> List.rev) @ (highers |> List.rev)
LinkedList.ofList nums
| Node (v, next) ->
if v < x then
partition' next x (v :: lowers) highers
else
partition' next x lowers (v :: highers)
partition' head x [] []