016_搜索旋转排序数组

知识点:二分搜索

LeetCode第三十三题:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/

语言:GoLang

func search(nums []int, target int) int {
    length := len(nums)
    left, right := 0, length - 1

    if length == 1 {
        if nums[0] ==  target {
            return 0
        }
        return -1
    }

    for left <= right {
        mid := left + (right - left) / 2
        if nums[mid] == target {
            return mid
        }
        
        if nums[left] <= nums[mid] {
            if nums[left] <= target && target < nums[mid] {
                right = mid - 1
            } else {
                left = mid + 1
            }
        } else {
            if nums[mid] < target && target <= nums[right] {
                left = mid + 1
            } else {
                right = mid - 1
            }
        }
    }
    return -1
}
posted @ 2020-03-12 20:53  Cenyol  阅读(88)  评论(0)    收藏  举报