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)