class Solution {
public:
int search(vector<int>& arr, int target) {
int size = (int)arr.size();
if (!size ) {
return -1;
}
if (size == 1) {
return arr[0] == target ? 0 : -1;
}
int left = 0, right = size - 1;
while (left<= right ) {
int mid = (left+ right ) / 2;
if (arr[mid] == target) return mid;
if (arr[left] <= arr[mid]) {
if (arr[left] <= target && target < arr[mid]) {
right = mid - 1;
} else {
left= mid + 1;
}
} else {
if (arr[mid] < target && target <= arr[size - 1]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
}
return -1;
}
};
搜索旋转排序数组
于 2023-04-23 18:16:46 首次发布