LeetCode 81. Search in Rotated Sorted Array II in F#

URL

Search in Rotated Sorted Array II - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202308/search_in_rotated_sorted_array2/main.fsx

let search (nums: int[]) (target: int) : bool =
    let rec search' (nums: int[]) left right target =
        if left > right then
            false
        else
            let mid = left + (right - left) / 2

            if nums.[mid] = target then
                true
            elif nums.[left] < nums.[mid] then
                if nums.[mid] > target && nums.[left] <= target then
                    search' nums left (mid - 1) target
                else
                    search' nums (mid + 1) right target
            elif nums.[left] > nums.[mid] then
                if nums.[mid] < target && target < nums.[left] then
                    search' nums (mid + 1) right target
                else
                    search' nums left (mid - 1) target
            else
                search' nums (left + 1) right target

    search' nums 0 (nums.Length - 1) target