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

URL

leetcode.com/problems/search-in-rotated-sor..

Code

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

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
            else if nums.[left] < nums.[mid] then
                if nums.[left] <= target && target < nums.[mid] then
                    search' nums left (mid - 1) target
                else
                    search' nums (mid + 1) right target
            elif nums.[left] > nums.[mid] then
                if nums.[left] > target && nums.[mid] < target 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