LeetCode 287. Find the Duplicate Number in F#

URL

leetcode.com/problems/find-the-duplicate-nu..

Code

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

let findDuplicate (nums: int list) : int =
    let rec findDuplicate' (nums: int []) left right =
        if left > right then
            left
        else
            let mid = left + ((right - left) / 2)

            let count =
                nums
                |> Array.fold (fun acc n -> if n <= mid then acc + 1 else acc) 0

            if count <= mid then
                findDuplicate' nums (mid + 1) right
            else
                findDuplicate' nums left (mid - 1)

    findDuplicate' (nums |> Array.ofList) 1 (nums.Length - 1)