class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
if(target == nums[n-1]) return n-1;
int left = 0, right = n-1;
int key = nums[n-1];
while(left <= right){
int mid = (left + right) / 2;
if(nums[mid] == target) return mid;
if(target > key){
if(nums[mid] < key){
right = mid - 1;
}else{
if(nums[mid] < target) left = mid+1;
else {
right = mid - 1;
}
}
}else{
if(nums[mid] < target) {
left = mid + 1;
}
else{
if(nums[mid] > key) left = mid + 1;
else right = mid - 1;
}
}
}
return -1;
}
};
Leecode33 搜索旋转排序数组
最新推荐文章于 2024-09-08 20:02:08 发布