0033.搜索旋转排序数组
方法一:二分搜索
时间复杂度 $O(\log n)$,空间复杂度 $O(1)$。
func search(nums []int, target int) int {
left, right := 0, len(nums)-1
for left <= right {
mid := left + (right-left)/2
if nums[mid] == target {
return mid
} else if nums[mid] >= nums[left] {
if nums[left] <= target && nums[mid] > target {
right = mid - 1
} else {
left = mid + 1
}
} else {
if nums[mid] < target && nums[right] >= target {
left = mid + 1
} else {
right = mid - 1
}
}
}
return -1
}