版权声明:原创勿转 https://cloud.tencent.com/developer/article/1412897
类似二分查找的思路,每次需要判断前进的方向
func search(nums []int, target int) int {
lo := 0
hi := len(nums) - 1
for lo < hi {
mid := (lo + hi) / 2
if nums[mid] == target {
return mid
}
if nums[lo] <= nums[mid] {
if target >= nums[lo] && target < nums[mid] {
hi = mid - 1
} else {
lo = mid + 1
}
} else {
if target > nums[mid] && target <= nums[hi] {
lo = mid + 1
} else {
hi = mid - 1
}
}
}
if nums[lo] == target {
return lo
} else {
return -1
}
}