LeetCode 540. Single Element in a Sorted Array in F#

URL

Single Element in a Sorted Array - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/0540/main.fsx

let singleNonDuplicate (nums: int[]) : int =
    let rec singleNonDuplicate' (nums: int[]) left right =
        if left >= right then
            nums.[left]
        else
            let mid = left + (right - left) / 2
            let mid = if mid % 2 = 1 then mid - 1 else mid

            if nums.[mid] = nums.[mid + 1] then
                singleNonDuplicate' nums (mid + 2) right
            else
                singleNonDuplicate' nums left mid

    singleNonDuplicate' nums 0 (nums.Length - 1)