相似题目有:
- Search in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array II
class Solution {
public:
bool search(vector<int>& arr, int tar) {
int e = 0, r = arr.size() - 1
while (e <= r)
{
int m = e + ((r - e) >> 1)
if (arr[m] == tar) return true
else if (arr[r] < arr[m]) // (2) 在左侧搜索
{
if (arr[e] <= tar && tar < arr[m]) r = m - 1
else e = m + 1
}
else if (arr[r] > arr[m]) // (3) 在右侧搜索
{
if (arr[m] < tar && tar <= arr[r]) e = m + 1
else r = m - 1
}
else if (arr[r] == arr[m]) // (4) 相等,此时不知道怎么办了,只能跳过最右边的一个(或者跳过最左边的一个)
r--
}
return false
}
}