LeetCode 21. Merge Two Sorted Lists in F#
URL
leetcode.com/problems/merge-two-sorted-lists
Code
github.com/syohex/dotnet-study/blob/master/..
type LinkedList =
| ListEnd
| ListNode of int * LinkedList
static member toList(r: LinkedList) : int list =
let rec toList' r acc =
match r with
| ListEnd -> acc |> List.rev
| ListNode (v, rest) -> toList' rest (v :: acc)
toList' r []
let rec mergeTwoLists (list1: LinkedList) (list2: LinkedList) : LinkedList =
match list1, list2 with
| ListEnd, ListEnd -> ListEnd
| _, ListEnd -> list1
| ListEnd, _ -> list2
| ListNode (v1, rest1), ListNode (v2, rest2) ->
if v1 <= v2 then
ListNode(v1, mergeTwoLists rest1 list2)
else
ListNode(v2, mergeTwoLists list1 rest2)