0081.搜索旋转排序数组 II
方法一:二分搜索
时间复杂度 $O(\log n)$,空间复杂度 $O(1)$。
func search(nums []int, target int) bool {
for l, r := 0, len(nums)-1; l <= r; {
m := l + (r-l)>>1
if nums[m] == target {
return true
} else if nums[m] > nums[l] || nums[m] > nums[r] {
if target >= nums[l] && target < nums[m] {
r = m - 1
} else {
l = m + 1
}
} else if nums[m] < nums[l] || nums[m] < nums[r] {
if target > nums[m] && target <= nums[r] {
l = m + 1
} else {
r = m - 1
}
} else {
r -= 1
}
}
return false
}